例如,用户键入密码->系统将加密->密码将存储在数据库中。
当我尝试从教程@ https://www.tutorialspoint.com/java_cryptography/java_cryptography_decrypting_data.html中给出的方法时。它工作得很好。但是,当我尝试将其修改为我的需要时。我不断收到异常错误。
encryptionQuery.java 这是我的加密方法
byte[] cipherText;
public byte[] encryption(String password) {
public void encryption(String password) {
try {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair pair = keyPairGen.generateKeyPair();
PublicKey publicKey = pair.getPublic();
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] input = password.getBytes();
cipher.update(input);
cipherText = cipher.doFinal();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
对于getCipher,在我将我的plainText转换为加密的Text之后。它应该存储在我的数据库中。但出于测试目的,我已将其存储在我的全局变量cipherText
中private byte[] getcipher() {
return cipherText;
}
解密方法..
public void passwordDecrpyted() {
try {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
keyPairGen.initialize(2048);
KeyPair pair = keyPairGen.generateKeyPair();
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, pair.getPrivate());
byte[] decipheredText = cipher.doFinal(getcipher());
System.out.println(new String(decipheredText));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我觉得我的解密方法存在问题。当我运行程序时,我一直收到的错误是
sun.security.rsa.RSAPadding.unpadV15(未知来源)
sun.security.rsa.RSAPadding.unpad(未知来源)
预先感谢您:)