我有这个问题我正在尝试使用此代码对字符串进行两次加密:
KeySpec keySpec = new X509EncodedKeySpec(new BigInteger(publicKey, 36).toByteArray());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key decodedPublicKey = keyFactory.generatePublic(keySpec);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, decodedPublicKey);
byte a1[] = cipher.doFinal(z.getBytes());
KeySpec keySpec2 = new X509EncodedKeySpec(new BigInteger(publicKey, 36).toByteArray());
KeyFactory keyFactory2 = KeyFactory.getInstance("RSA");
Key decodedPublicKey2 = keyFactory2.generatePublic(keySpec2);
Cipher cipher2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher2.init(Cipher.ENCRYPT_MODE, decodedPublicKey2);
byte a2[] = cipher.doFinal(z.getBytes());
两者都使用相同publicKey
和相同的输入z
,但两个代码块中的每一个都创建一个不同的字节数组(a1!=a2
)我希望它相等但我不知道该怎么做(试图查找它但找不到回答呢)。
如果有人可以帮助我,我将不胜感激。
谢谢
编辑 :
好吧,我没有使用 AES 加密,因为我加密的数据非常小(只是一个密码)
我有一个客户端和一个服务器,当有人连接到客户端时,我想确认他的密码(他的加密密码在 android sdcard 上的文件中)所以我想将真实密码与用户输入的密码进行比较登录页面
我在客户端上没有私钥,所以我无法解密设备上已经存在的加密通行证,所以我尝试比较加密密码(我认为这与我现在知道的密码相同) )
也许你知道我能做什么?如何在我只有公钥的情况下比较密码和加密密码
谢谢