Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 30.10.2010, 23:20   #11
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 38
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Кислый пока неопределено
По умолчанию

Код:
function RSAEncrypt(a,p,rsakey:string):string;
var
zSt: string;
sD,sR,sM:string;
m,e,d,r:TFGInt;
begin
//это то что добавил без этого никак
SetLength(zSt, 98);
FillChar(zSt[1], Length(zSt), 0);
zSt[95]:= #$20;
if length(a)>14 then setlength(a,14);
while length(a)<14 do a:=a+#0;
if length(p)>16 then setlength(p,16);
while length(p)<16 do p:=p+#0;
sD:=zSt+a+p+#0#0#0#0;// ну и сюда вначале добавляю свою строку
sM:=rsakey;
Base10StringToFGInt('65537',e);
Base256StringToFGInt(sD,d);
Base256StringToFGInt(sM,m);
FGIntMontgomeryModExp(d,e,m,r);
FGIntToBase256String(r,sR);
result:=sR;
end;
помогите реализовать на сях.

у самого получается только
Код:
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    cout << "RSA_Encrypt" << endl;

    char zSt[98];
    char sD, sR, sM;
    //? m, e, d, r;
char a_[14];
    //out var
    char a[] = "0123456789ABCDEF";//89ABCDEF";
    char p[] = "0123456789ABCDEF0.123456789";

    char rsakey;
    //begin
    int i_ =0;
    while (i_<sizeof(zSt))
        { zSt[i_]=0 ; i_++; cout << i_-1<< " " << (int)zSt[i_-1] << endl;};

    zSt[95] = 0x20;
    cout << (int)zSt[95] << " " << (float)zSt[95] << endl;

    if (strlen(a)>14)
        {       char a_[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
                int i; for (i=0;i<15;++i){cin>>a_[i];cout<<i<<" "<<a_[i]<<endl;};
                strncpy( a_, a, 14);
                cout <<"a = " << a_ << " " << a << endl;
        };
    while(strlen(a)<14)
        {
                 strcat(a, "0");
        };

    if (strlen(p)>16)
        {       char p_[16];
                strncpy( p_, p, 16);
                cout <<"p =" << p_ << " " << p << endl;
        };
    while(strlen(p)<16)
        {
                 strcat(p, "0");
                 cout << "while  " << p << endl;
        };
        
   // ?? strcat(, "0");    
    
    return 0;
}
как видите никак ((
Кислый вне форума   Ответить с цитированием
Старый 31.10.2010, 00:07   #12
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Кислый, для начала тебе нужен модуль для работы с огромными числами для си, а что ты тут за бред написал я хз...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 31.10.2010, 01:44   #13
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 38
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Кислый пока неопределено
По умолчанию

ну допустим gmp..

Добавлено через 1 час 12 минут
в принципе по ветке http://coderx.ru/archive/index.php/t-2712.html понятно, но хотелось бы увидеть так сказать код "один-в-один".

Последний раз редактировалось Кислый, 31.10.2010 в 01:44. Причина: Добавлено сообщение
Кислый вне форума   Ответить с цитированием
Старый 31.10.2010, 15:38   #14
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Кислый, хотеть не вредно, напиши и увидишь)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 31.10.2010, 18:55   #15
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 38
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Кислый пока неопределено
По умолчанию

ну на вопрос то ответите ? есть предположение о назначении

function RSAEncrypt(a,p,rsakey:string):string;
var
zSt: string;
sD,sR,sM:string;
m,e,d,r:TFGInt;
begin
//это то что добавил без этого никак
SetLength(zSt, 98);
FillChar(zSt[1], Length(zSt), 0);
zSt[95]:= #$20;
if length(a)>14 then setlength(a,14);
while length(a)<14 do a:=a+#0;
if length(p)>16 then setlength(p,16);
while length(p)<16 do p:=p+#0;
sD:=zSt+a+p+#0#0#0#0;// ну и сюда вначале добавляю свою строку
sM:=rsakey;


просто я непонимаю что предыдущий автор кода хотел этим всем сказать ((

/т.е. вначале мы задаем длинну строки, с первого символа заполняем нулями (или нулевыми анси), задаем 95й элемент строки(как массива) как $20. Далее проверяем длинну а и p, и соответсвенно убираем лишнее или дописываем нули.. только я не пойму нафиг все это ?
Кислый вне форума   Ответить с цитированием
Старый 31.10.2010, 22:11   #16
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от Кислый Посмотреть сообщение
только я не пойму нафиг все это ?
я тоже не пойму нафига эти нули ибо 000002000 = 2000, и следовательно вполне достаточно делать так:
delphi Код:
function RSAEncrypt(a,p,rsakey:string):string; var sD,sR,sM:string; m,e,d,r:TFGInt; begin   if length(a)>14 then setlength(a,14);   while length(a)<14 do a:=a+#0;   if length(p)>16 then setlength(p,16);   while length(p)<16 do p:=p+#0;   sD:=#$20#0#0+a+p+#0#0#0#0;   sM:=rsakey;   Base10StringToFGInt('65537',e);   Base256StringToFGInt(sD,d);   Base256StringToFGInt(sM,m);   FGIntMontgomeryModExp(d,e,m,r);   FGIntToBase256String(r,sR);   result:=sR; end;

Добавлено через 6 минут
a и p мы приводим к правильной длине затем что так положено, ибо зашифровать нам надо 37хбайтное число где первый байт это $20, байты с 4го по 17й - логин, с 18го по 33й - пароль, остальные нули)
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 31.10.2010 в 22:11. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
Старый 01.11.2010, 01:30   #17
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 38
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Кислый пока неопределено
По умолчанию

что-то я запутался. прошу рассказать что есть а и p.
Кислый вне форума   Ответить с цитированием
Старый 01.11.2010, 01:53   #18
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Кислый, логин и пароль)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 01.11.2010, 02:38   #19
Пользователь
 
Регистрация: 11.06.2009
Сообщений: 50
Сказал Спасибо: 1
Имеет 5 спасибок в 4 сообщенях
unknowned пока неопределено
По умолчанию

Цитата:
Сообщение от Кислый Посмотреть сообщение

помогите реализовать на сях.
Кислый, а зачем тебе си ?
__________________
рукалицо.жпг
unknowned вне форума   Ответить с цитированием
Старый 01.11.2010, 14:39   #20
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 38
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Кислый пока неопределено
По умолчанию

хочется мне. вообще все затевалось для последующей реализации этих алгоритмов на микроконтроллерах(а там используется С ). потом затянуло и появилось желание сделать что-то большое и красивое )))
Кислый вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:16.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!