генератор псевдослучайных чисел на основе FIPS 186-2 - PullRequest
2 голосов
/ 10 июня 2011

Привет, ребята. Мне нужно сгенерировать случайное число (160 байт) на основе FIPS 186-2 в .net на основе заданного ключа (обсуждение можно найти в реализации RFC 4186 eap-sim). Что я знаю, так это то, что FIPS 186-2 реализован как DSA в .net, который выдаст 40 байтов сигнатуры, а не 160. Может кто-нибудь сказать мне, что я делаю неправильно?

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Необходимо реализовать алгоритм в приложении B к RFC 4186 (альтернативно, добавление 3 к FIPS 186-2).В .NET Framework его реализации нет.Поскольку алгоритм в этом случае используется для получения ключа, вы не можете заменить его другим генератором случайных чисел.

В этом процессе вам также потребуется переопределить большую часть SHA-1, поскольку необходима G-функцияявляется функцией сжатия SHA-1, которая недоступна из общедоступного интерфейса в .NET Framework.

Удачи: -)

1 голос
/ 10 июня 2011

Не моя область, но я думаю, что FIPS 186 использует 160 бит ключ и соль (или семя). Это всего 20 байтов.

В любом случае System.Security.Cryptography.RandomNumberGenerator с радостью заполнит байтовый массив любой длины для вас. И это считается безопасным для криптографической работы.

0 голосов
/ 23 мая 2013

я изменяю код, найденный в SHA1 Исходный код

Хитрость заключается в заполнении сообщения с (512 - длина сообщения в битах) 0 вместо заполнения, определенного в SECURE HASH STANDARD

если сообщение для хэша находится в шестнадцатеричной строке, используйте:

message = message.PadRight((512/4),'0');

для модуля и экспоненциальной операции, я использовал Org.BouncyCastle.Math.BigInteger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...