Здравствуйте Аноним, Вы писали:
А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)
Есть такой простенький алгоритм (по-моему когда-то использовался в arj): берется некая строка — ключ, и исходная строка побайтно ксорится с этим ключом.
Например есть
Здравствуйте Аноним, Вы писали:
А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)
Если Вы программируете под Windows, то в ней есть специальный крипто-апи. Функции начинаются с "Crypt". Там можно использовать готовые алгоритмы.
К сожалению, в действительности все выглядит иначе, чем на самом деле.
Re[2]: алгоритм шифрования
От:
Аноним
Дата:
30.10.01 18:44
Оценка:
Здравствуйте Tigor, Вы писали:
T>Если Вы программируете под Windows, то в ней есть специальный крипто-апи. Функции начинаются с "Crypt". Там можно использовать готовые алгоритмы.
они достаточно сложные в оработе, да и нужно линковать дополнительные длл, а в моем случает — это просто недопустимо...
вопрос к Bell:
это относится только к ключу?
если пароль который я шифрую будет 123 или 123123, а ключь например Anonim это какнить может мне помешать?
Здравствуйте 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, тоесть "символ конца строки", а тут уже появятся напряги по работе с файлами, сокетами!, итд...
как этого можно избежать? (например, какой символ точно не может быть задействован?(для замены))
Здравствуйте Аноним, Вы писали:
А>Здравствуйте Tigor, Вы писали:
T>>Если Вы программируете под Windows, то в ней есть специальный крипто-апи. Функции начинаются с "Crypt". Там можно использовать готовые алгоритмы.
А>они достаточно сложные в оработе, да и нужно линковать дополнительные длл, а в моем случает — это просто недопустимо...
А>вопрос к Bell: А>это относится только к ключу? А>если пароль который я шифрую будет 123 или 123123, а ключь например Anonim это какнить может мне помешать?
Да нет, я думаю ничего страшного в этом нет. Единственная неприятность — это если длина повторяющихся фрагментов в исходной последовательности и длина ключа кратны, то выходная последовательность тоже будет состоять из повторяющихся фрагментов :-(
Здравствуйте 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>как этого можно избежать? (например, какой символ точно не может быть задействован?(для замены))
Да по-моему лучше передавать зашифрованную строку как массив байтов, а после расшифровки преобразовать в строку...
Здравствуйте Аноним, Вы писали:
А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)
лично я тебе рекомендую воспользоватся алгоритмом IDEA-бесплатен для некоммерческого использования, основал на несовместных битовых операциях,т.е. стоек, быстр, т.к. при реализации использует только логические операции и сдвиги, просто в реализации(по сравнению с аналогами), есть доступные примеры исходников
Здравствуйте 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},
используя любую биективную функцию. Например, сложение/вычитание с ключом.
(Ой, забыл, как вся эта теоретико-алгебраическая чача называется. Звыняйте...)
Здравствуйте Аноним, Вы писали:
А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)
мой совет, сходить на http://www.openssl.org/, и от туда взять сорци DES'а или BlowFish'а, а лучше и то и другое и вообще все что там есть. Функции просты до нельзя, а алгоритмы проверены годами.
Здравствуйте Аноним, Вы писали:
А>подскажите плз какойнить простенький алгоритм шифрования (для строк (паролей итд)
Маленькое примечание. Если, действительно, есть потребность проверки пароля, то
сам пароль хранить на носителях не принято, даже в шифрованном виде. Вместо этого
с парольной строки берется однозначная свертка, и храниться именно она. А при вводе
пароля проделывается аналогичная процедура и сравниваются свертки...
А про открытые алгоритмы шифрования (не свертки векторов) согласен с Sashko,
DES и BlowFish вполне сгодятся для 'бытовых' целей:)