我們必須實現DES算法。我們想要編寫一些函數,但我們不知道如何測試我們的DES算法。如何測試加密算法?
是否有任何我們可以用來測試我們的加密和解密函數的知名工具/庫?我們需要第三方工具來告訴人們我們的版本確實有效。
我們必須實現DES算法。我們想要編寫一些函數,但我們不知道如何測試我們的DES算法。如何測試加密算法?
是否有任何我們可以用來測試我們的加密和解密函數的知名工具/庫?我們需要第三方工具來告訴人們我們的版本確實有效。
我假設你正在使用DES作爲3DES標準與技術研究院(NIST)國家研究所和3DES部分已經發表了大量的測試向量可以用於驗證的實現:
http://csrc.nist.gov/groups/STM/cavp/index.html
此外,您可以使用其他已知庫(如OpenSSL)測試互操作性(加密/解密)。如果加密的密文分別解密了明文,那麼你的實現是正確的可能性很高。
Java有大量的安全算法實現的: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html
Cipher desCipher = Cipher.getInstance("DES/CBC/NoPadding");
DESKeySpec desSpec = new DESKeySpec(desKey);
SecretKey des = SecretKeyFactory.getInstance("DES").generateSecret(desSpec);
desCipher.init(Cipher.ENCRYPT_MODE, des , ivSpec);
Java應該如何幫助C/C++開發人員解決問題? – Robert
@Robert:您可以使用(推測正確的)Java代碼生成測試輸入和輸出,並與C/C++實現進行匹配。 –
您按順序需要一個「第三方工具」到「告訴人們,我們的版本確實有效」,事實上聽起來像你參與在一家開發某種產品的公司中。在這種情況下,或者A)您製作的產品涉及但不限於加密,在這種情況下,您應該使用現有的,可信的庫(其中有許多可用的庫),或者B)該產品是加密產品在這種情況下,我想很多人會強調你不應該使用DES。現代密碼不僅更安全,而且在現代硬件上也更快。 – DarkOtter