java-使用相同的密码在Android中获取不同的加密密钥结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用相同的密码在Android中获取不同的加密密钥结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2083字,纯文字阅读大概需要3分钟。
内容图文
每次使用相同的密码运行设置方法时,每次都会得到不同的密钥结果.我正在使用关键结果来检查解密密码是否正确,以防止不必要的解密.
我在Java中运行了以下代码,但没有任何问题,但是在Android中,它会生成不同的密钥.有人可以告诉我问题出在哪里以及如何解决.我想在Android和Java之间安装通用软件.
当我在android中运行程序时,我得到的密钥是org.bouncycastle.jce.provider.JCEPBEKEY@12345678
当我在Java中运行程序时,我得到了密钥
com.sun.crypto.Provider.PBEKey@12345678
private static byte[] bytes;
Cipher ecipher;
Cipher dcipher;
// 8-byte Salt
byte[] salt = {
(byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
(byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03
};
// Iteration count
int iterationCount = 19;
public String setup(String passPhrase)
{
String output = null;
try {
// Create the key
KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES").generateSecret(keySpec);
ecipher = Cipher.getInstance(key.getAlgorithm());
dcipher = Cipher.getInstance(key.getAlgorithm());
// Prepare the parameter to the ciphers
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);
// Create the ciphers
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
// print key
System.out.println("key = " + key);
System.out.println("paramSpec = " + paramSpec);
output = key.toString();
// showToast("setting up key " + output);
// showToast("key size " + output.length());
System.out.println("key Size " + output.length());
} catch (java.security.InvalidAlgorithmParameterException e) {
} catch (java.security.spec.InvalidKeySpecException e) {
} catch (javax.crypto.NoSuchPaddingException e) {
} catch (java.security.NoSuchAlgorithmException e) {
} catch (java.security.InvalidKeyException e) {
}
return output;
}
解决方法:
更改行:
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES").generateSecret(keySpec);
至
SecretKey key = SecretKeyFactory.getInstance(
"PBEWithMD5AndDES","BC").generateSecret(keySpec);
像这样,您特别要求加密提供者(有弹性的城堡)
注意:您也必须将bouncycastle提供程序添加到您的VM.
内容总结
以上是互联网集市为您收集整理的java-使用相同的密码在Android中获取不同的加密密钥结果全部内容,希望文章能够帮你解决java-使用相同的密码在Android中获取不同的加密密钥结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。