Шифрование ECC с помощью BouncyCastle для C # - PullRequest
0 голосов
/ 20 декабря 2009

После прочтения этого поста об использовании ECC для реализации хеширования с использованием закрытого ключа я приступил к поиску реализации ECDH, и наткнулся на BoucyCastle .

К сожалению, документация минимальна (как в нуле!), И я не уверен, что Я собираюсь выполнить полностью правильно / действительно.

Мы хотим просто хешировать 4 строки, которые будут информацией о регистрации пользователей (имя, компания, идентификатор их компании и идентификатор их учетной записи, длина которых составляет 12 символов), которые затем будут вычислять сериал, который они могут использовать для активации нашего программного обеспечения.

Я сгенерировал пару ключей с помощью PUTTYGEN.exe, но не могу понять, как применить это с BouncyCastle, какой класс я могу использовать, чтобы начать? Есть ли там примеры?

Пока что я объединил информацию и вычислил ее хэш MD5 (используя классы .NET). Я не могу использовать новые расширенные функции API VISTA, поскольку мы все еще нацелены на XP - .NET 3.5.

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2009

До сих пор я объединял информацию и вычислял ее хеш MD5 (используя классы .NET) .....
Это утверждение само по себе беспокоит меня. MD5 серьезно взломан - не только теоретически, но и практически. Пожалуйста, не используйте MD5 для безопасного хеширования. Используйте SHA-256 или SHA-512 и вот почему

Кроме того, ссылка, которую вы связали, не совсем верна - да, симметричные алгоритмы используют один и тот же ключ для шифрования / дешифрования, но открытый / закрытый ключ - не волшебная палочка.

1) Медленный открытый / закрытый ключ
2) Большинство публичных / частных алгоритмов просто шифруют симметричный ключ и затем используют симметричное шифрование для данных, потому что это намного быстрее

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

0 голосов
/ 20 декабря 2009

Я думаю, .NET имеет класс RSACryptoServiceProvider, который является полной реализацией RSA.

Здесь приведен пример кода для вашего конкретного приложения:

http://www.codeproject.com/KB/security/xmldsiglic.aspx

В этом примере они используют инструмент MS sn.exe для создания ключа.

...