嗨,大家好,我需要根據給定的密鑰在.net中根據FIPS 186-2生成一個隨機數(160字節)(討論可以在RFC 4186上找到) - 實現)。我知道FIPS 186-2是作爲DSA在.net上實現的,它將提供40字節的簽名字節而不是160.有人能告訴我我做錯了什麼嗎?基於FIPS的僞隨機數生成器186-2
回答
您需要在RFC 4186附錄B(或FIPS 186-2的附錄3)中實現該算法。在.NET框架中沒有實現它。由於這種情況下的算法用於密鑰推導,因此不能用另一個隨機數生成器替換它。
在此過程中,您還需要重新實現大多數SHA-1,因爲所需的G函數是SHA-1的壓縮函數,無法從公共接口訪問.NET框架。
好運:-)
Yap這就是我正在尋找的,我沒有任何密碼學背景開始。 – powerbox 2011-06-10 13:12:10
工作的最大部分將是SHA-1壓縮功能。一個好的起點是這樣的:http://www.bouncycastle.org/viewcvs/viewcvs.cgi/csharp/crypto/src/crypto/digests/Sha1Digest.cs?view=markup – 2011-06-10 17:20:38
我已經讀了很多關於這個壓縮現在我正在尋找sha1添加一些填充之前的那部分,根據我的理解,我不應該使用上面討論的相同散列來填充填充。 – powerbox 2011-06-10 21:15:26
不是我的區域,但我認爲FIPS 186使用160 位鍵和鹽(或種子)。這隻有20個字節。
在任何情況下,System.Security.Cryptography.RandomNumberGenerator
都會爲您快樂地填充任意長度的字節數組。密碼工作被認爲是安全的。
我修改找到的代碼在SHA1 Source code
訣竅是墊與所述消息(512 - message.length在比特)SECURE HASH STANDARD
定義0代替填充如果散列消息是在六列使用:
message = message.PadRight((512/4),'0');
用於模和模運算我使用或g.BouncyCastle.Math.BigInteger
- 1. 基於2個輸入的僞隨機數發生器
- 2. 僞隨機的URL生成
- 3. 符合FIPS 140-2標準的隨機數生成器 - Java
- 4. 生成可靠的僞隨機數
- 5. 隨機二進制生成器(不僞)
- 6. 通過僞隨機樸素隨機數生成器生成隨機數序列的正確方法
- 7. Matlab:如何生成僞隨機數
- 8. 僞隨機數發生器項目
- 9. 噪聲僞隨機數發生器
- 10. 種子僞隨機數發生器
- 11. 您的僞隨機數發生器(PRNG)是否不夠隨機?
- 12. 多次播種僞隨機數生成器的問題?
- 13. JavaScript中的非重複僞隨機數生成器
- 14. 生成25個僞隨機字符串
- 15. 使用vim生成基於整數的隨機數表?
- 16. 基於MySQL數據庫中的股票隨機生成數字
- 17. 產生不均勻的僞隨機數
- 18. 基於正則表達式的隨機文本生成器
- 19. 僞隨機生成器每次返回相同的位
- 20. 關於生成唯一的隨機數
- 21. 使用Boost生成基於Beta分佈的隨機數
- 22. 基於sqlserver中的條件生成隨機數
- 23. 生成可重現的大量序列 - 使用僞隨機生成器?
- 24. 生成隨機數
- 25. 隨機數生成
- 26. 生成隨機數
- 27. 僞隨機整數
- 28. 生成的僞隨機流與熵參數
- 29. 如何生成相同的一系列僞隨機整數?
- 30. 僞隨機數發生器中的狀態函數是什麼?
160字節或160位?更好地檢查。 – 2011-06-10 09:32:44
讓我檢查RFC 4186上關於文檔如何與1280位散列值一起出現的過程。 – powerbox 2011-06-10 09:53:26