一个单元如何测试非确定性加密函数?

时间:2010-12-10 08:29:29

标签: java javascript unit-testing encryption

我正在尝试从javascript到java重新实现非确定性加密函数。但是我注意到函数的输出每次都不同。但是,每当我解密输出时,它总是返回原始文本。

例如:

字:你好

加密:?HX?631ffe50353ddda632a7e8fa11136d6ffaa584eb43b34c96005b6256f9dc 4121c7a8545d79887b900672e5870d702441?H

解密:你好

字:你好

加密:?HX?dfea4d1d30ebd5fc871c7c92d0230baf9e5298b19c3cfa0770fe2d2035f8 dad0116f2963b115c85c9d4725be505fca54?H

解密:你好

依旧......

要对此进行单元测试,我能想到的一种方法是在java中实现解密函数,然后解密加密函数的输出。如果解密产生原始文本,则加密是正确的。

例如:

encrypted = Encrypt_text(word);
assertEquals(word,Decrypt_text(encrypted);

还有其他建议......?

2 个答案:

答案 0 :(得分:2)

最好使用原始解密函数来验证加密函数,而不是新的解密例程。如果您同时编写并使用它们进行相互测试,则您将验证数据是否正确往返,但您不会验证中间结果。

您可以使用Mozilla Rhino运行Javascript解密例程:http://www.mozilla.org/rhino/

答案 1 :(得分:1)

如果您对加密表单不感兴趣,那么断言就是完美的。