Kuu*_*Kuu 2 java security encryption android
我使用此代码在Java和Android中加密和解密一些字符串,在每个系统中我得到不同的值.
我正在使用的代码来自http://www.androidsnippets.com/encryptdecrypt-strings(我不会粘贴它,因为它非常大).
例如在Android中加密"aa"我得到这个:1C6BD31C57F42ACFD0EDD2DD5B7A92CA
与Java中的种子具有相同密钥的完全相同的字符串我得到:61FAD1203B7AC92AD9345771AA273DA5
任何的想法?
提前致谢!
这只是我的猜测,但我认为原因是你的关键推导.我不是一个真正的Java开发人员,所以我可能无法正确理解代码.
加密和解密时,此代码始终调用getRawKey().getRawKey()看起来需要他们称之为种子或共享秘密的东西,并使用它来计算新的随机密钥以进行实际的加密/解密.
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(seed);
kgen.init(128, sr); // 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
Run Code Online (Sandbox Code Playgroud)
根据这里发现的Java文档,setSeed()"重新种植这个随机对象.给定的种子补充,而不是替换现有的种子."
我的猜测是RNG的初始状态在每个系统/平台上都是不同的,因此它会给你不同的结果.您应该将密钥派生修复为更标准和一致的内容,或者使用已经建立的加密系统,如Bouncy Castle库中的PGP.
| 归档时间: |
|
| 查看次数: |
3994 次 |
| 最近记录: |