алгоритм шифрования
От: Аноним  
Дата: 30.10.01 03:40
Оценка:
подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)
Re: алгоритм шифрования
От: Bell Россия  
Дата: 30.10.01 06:11
Оценка:
Здравствуйте Аноним, Вы писали:

А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


Есть такой простенький алгоритм (по-моему когда-то использовался в arj): берется некая строка — ключ, и исходная строка побайтно ксорится с этим ключом.
Например есть

char strSource[20];
char strDestination[20];
char strKey[3];

Тогда процедура шифрования выглядит так:
strDestinationх[0] = strSource[0]^strKey[0];
strDestinationх[1] = strSource[1]^strKey[1];
strDestinationх[2] = strSource[2]^strKey[2];
strDestinationх[3] = strSource[3]^strKey[0];
.......
ну и т.д.
При использовании этого алгортма ключи "123" и "123123" дадут одинаковые зашифрованные строки.
Любите книгу — источник знаний (с) М.Горький
Re: алгоритм шифрования
От: Tigor Россия  
Дата: 30.10.01 15:47
Оценка:
Здравствуйте Аноним, Вы писали:

А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


Если Вы программируете под Windows, то в ней есть специальный крипто-апи. Функции начинаются с "Crypt". Там можно использовать готовые алгоритмы.
К сожалению, в действительности все выглядит иначе, чем на самом деле.
Re[2]: алгоритм шифрования
От: Аноним  
Дата: 30.10.01 18:44
Оценка:
Здравствуйте Tigor, Вы писали:

T>Если Вы программируете под Windows, то в ней есть специальный крипто-апи. Функции начинаются с "Crypt". Там можно использовать готовые алгоритмы.


они достаточно сложные в оработе, да и нужно линковать дополнительные длл, а в моем случает — это просто недопустимо...

вопрос к Bell:
это относится только к ключу?
если пароль который я шифрую будет 123 или 123123, а ключь например Anonim это какнить может мне помешать?
Re[2]: алгоритм шифрования
От: NetMinion  
Дата: 31.10.01 00:11
Оценка:
Здравствуйте Bell, Вы писали:

B>Здравствуйте Аноним, Вы писали:


А>>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


B>Есть такой простенький алгоритм (по-моему когда-то использовался в arj): берется некая строка — ключ, и исходная строка побайтно ксорится с этим ключом.

B>Например есть

B>char strSource[20];

B>char strDestination[20];
B>char strKey[3];

B>Тогда процедура шифрования выглядит так:

B>strDestinationх[0] = strSource[0]^strKey[0];
B>strDestinationх[1] = strSource[1]^strKey[1];
B>strDestinationх[2] = strSource[2]^strKey[2];
B>strDestinationх[3] = strSource[3]^strKey[0];
B>.......
B>ну и т.д.
B>При использовании этого алгортма ключи "123" и "123123" дадут одинаковые зашифрованные строки.
и тут возникает одна неприятность((((
если в strSource и strKey содержится один и тотже символ, то в результате мы получим 0, тоесть "символ конца строки", а тут уже появятся напряги по работе с файлами, сокетами!, итд...
как этого можно избежать? (например, какой символ точно не может быть задействован?(для замены))
NetMinion
Re[3]: алгоритм шифрования
От: Bell Россия  
Дата: 31.10.01 07:50
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Tigor, Вы писали:


T>>Если Вы программируете под Windows, то в ней есть специальный крипто-апи. Функции начинаются с "Crypt". Там можно использовать готовые алгоритмы.


А>они достаточно сложные в оработе, да и нужно линковать дополнительные длл, а в моем случает — это просто недопустимо...


А>вопрос к Bell:

А>это относится только к ключу?
А>если пароль который я шифрую будет 123 или 123123, а ключь например Anonim это какнить может мне помешать?

Да нет, я думаю ничего страшного в этом нет. Единственная неприятность — это если длина повторяющихся фрагментов в исходной последовательности и длина ключа кратны, то выходная последовательность тоже будет состоять из повторяющихся фрагментов :-(
Любите книгу — источник знаний (с) М.Горький
Re[3]: алгоритм шифрования
От: Bell Россия  
Дата: 31.10.01 07:52
Оценка:
Здравствуйте NetMinion, Вы писали:

NM>Здравствуйте Bell, Вы писали:


B>>Здравствуйте Аноним, Вы писали:


А>>>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


B>>Есть такой простенький алгоритм (по-моему когда-то использовался в arj): берется некая строка — ключ, и исходная строка побайтно ксорится с этим ключом.

B>>Например есть

B>>char strSource[20];

B>>char strDestination[20];
B>>char strKey[3];

B>>Тогда процедура шифрования выглядит так:

B>>strDestinationх[0] = strSource[0]^strKey[0];
B>>strDestinationх[1] = strSource[1]^strKey[1];
B>>strDestinationх[2] = strSource[2]^strKey[2];
B>>strDestinationх[3] = strSource[3]^strKey[0];
B>>.......
B>>ну и т.д.
B>>При использовании этого алгортма ключи "123" и "123123" дадут одинаковые зашифрованные строки.
NM>и тут возникает одна неприятность((((
NM>если в strSource и strKey содержится один и тотже символ, то в результате мы получим 0, тоесть "символ конца строки", а тут уже появятся напряги по работе с файлами, сокетами!, итд...
NM>как этого можно избежать? (например, какой символ точно не может быть задействован?(для замены))

Да по-моему лучше передавать зашифрованную строку как массив байтов, а после расшифровки преобразовать в строку...
Любите книгу — источник знаний (с) М.Горький
Re: алгоритм шифрования
От: sluge  
Дата: 03.11.01 10:27
Оценка:
Здравствуйте Аноним, Вы писали:

А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


лично я тебе рекомендую воспользоватся алгоритмом IDEA-бесплатен для некоммерческого использования, основал на несовместных битовых операциях,т.е. стоек, быстр, т.к. при реализации использует только логические операции и сдвиги, просто в реализации(по сравнению с аналогами), есть доступные примеры исходников
Re[4]: алгоритм шифрования
От: Кодт Россия  
Дата: 05.01.02 18:15
Оценка:
Здравствуйте Bell, Вы писали:

B>>>Есть такой простенький алгоритм (по-моему когда-то использовался в arj): берется некая строка — ключ, и исходная строка побайтно ксорится с этим ключом.

B>>>Например есть

B>>>char strSource[20];

B>>>char strDestination[20];
B>>>char strKey[3];

B>>>Тогда процедура шифрования выглядит так:

B>>>strDestinationх[0] = strSource[0]^strKey[0];
B>>>strDestinationх[1] = strSource[1]^strKey[1];
B>>>strDestinationх[2] = strSource[2]^strKey[2];
B>>>strDestinationх[3] = strSource[3]^strKey[0];
B>>>.......
NM>>и тут возникает одна неприятность((((
NM>>если в strSource и strKey содержится один и тотже символ, то в результате мы получим 0, тоесть "символ конца строки", а тут уже появятся напряги по работе с файлами, сокетами!, итд...
NM>>как этого можно избежать? (например, какой символ точно не может быть задействован?(для замены))

B>Да по-моему лучше передавать зашифрованную строку как массив байтов, а после расшифровки преобразовать в строку...


Для этого нужно работать не в пространстве {0..255} а в {1..255},
используя любую биективную функцию. Например, сложение/вычитание с ключом.
(Ой, забыл, как вся эта теоретико-алгебраическая чача называется. Звыняйте...)

const unsigned char MinCode = 1;
const unsigned char MaxCode = 255;
const unsigned char CodeBase = MaxCode - MinCode + 1;

unsigned char chrSource; // MinCode..MaxCode;
// символы, равные по модулю CodeBase - неразличимы
// и, следовательно, выход за диапазон MinCode..MaxCode - недопустим

unsigned char chrKey;
// ключи, равные по модулю CodeBase - неразличимы.
// выход за диапазон - не имеет значения.

unsigned char chrSrc1 = chrSource - MinCode; // 0..CodeBase-1

unsigned char chrEnc1 = (chrSrc1 + chrKey) % CodeBase; // 0..CodeBase-1

unsigned char chrEncrypted = chrEnc1 + MinCode; // MinCode..MaxCode

unsigned char chrDec1 = (chrEnc1 - chrKey1) % CodeBase; // 0..CodeBase-1

unsigned char chrDecrypted = chrDec1 + MinCode; // MinCode..MaxCode

assert(chrDecrypted == chrSource);
Перекуём баги на фичи!
Re: алгоритм шифрования
От: Sashko Россия http://www.dc.baika.ru/
Дата: 06.01.02 03:28
Оценка:
Здравствуйте Аноним, Вы писали:

А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


мой совет, сходить на http://www.openssl.org/, и от туда взять сорци DES'а или BlowFish'а, а лучше и то и другое и вообще все что там есть. Функции просты до нельзя, а алгоритмы проверены годами.
Re: алгоритм шифрования
От: Andrew__S Россия  
Дата: 06.01.02 15:29
Оценка:
Здравствуйте Аноним, Вы писали:

А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)


Маленькое примечание. Если, действительно, есть потребность проверки пароля, то
сам пароль хранить на носителях не принято, даже в шифрованном виде. Вместо этого
с парольной строки берется однозначная свертка, и храниться именно она. А при вводе
пароля проделывается аналогичная процедура и сравниваются свертки...
А про открытые алгоритмы шифрования (не свертки векторов) согласен с Sashko,
DES и BlowFish вполне сгодятся для 'бытовых' целей:)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.