我如何在这里解密消息加密?

try{ String plainData="my name is laksahan",cipherText,decryptedText; KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128); SecretKey secretKey = keyGen.generateKey(); Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.ENCRYPT_MODE,secretKey); byte[] byteDataToEncrypt = plainData.getBytes(); byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt); cipherText = new BASE64Encoder().encode(byteCipherText); System.out.println(cipherText); }catch(Exception e){ } 

我也有解密代码,但我想使用cipherText的输出解密消息。

例如; 我的密文输出是uSG1OxJPywzU4JylpqgS6SoB9t21GZ4iN3bY2M6Qf10=

我想解密一下: uSG1OxJPywzU4JylpqgS6SoB9t21GZ4iN3bY2M6Qf10=

提前致谢。

试试这个代码,它在我的电脑上工作正常。祝你好运!

 import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; public class AESExample { public static void main(String[] args) { try { String plainData = "my name is laksahan", cipherText, decryptedText; KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128); SecretKey secretKey = keyGen.generateKey(); cipherText = encrypt(plainData, secretKey); System.out.println(cipherText); decryptedText = decrypt(cipherText, secretKey); System.out.println(decryptedText); } catch (Exception e) { e.printStackTrace(); } } public static String encrypt(String plainData, SecretKey secretKey) throws Exception { Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] byteDataToEncrypt = plainData.getBytes(); byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt); return new BASE64Encoder().encode(byteCipherText); } public static String decrypt(String cipherData, SecretKey secretKey) throws Exception { byte[] data = new BASE64Decoder().decodeBuffer(cipherData); Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] plainData = aesCipher.doFinal(data); return new String(plainData); } } 

如果您想使用客户密钥,请尝试以下代码,只需记住密钥长度为128位。 顺便说一句,我更喜欢将我的密钥存储在密钥库文件中!

 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; public class AESExample { public static void main(String[] args) { try { byte[]key={-4, -14, 106, -75, -9, 65, -95, 77, -52, 73, -87, -101, 80, 94, -59, -66}; String plainData = "my name is laksahan", cipherText, decryptedText; System.out.println(key.length); cipherText = encrypt(plainData, key); System.out.println(cipherText); decryptedText = decrypt(cipherText, key); System.out.println(decryptedText); } catch (Exception e) { e.printStackTrace(); } } public static String encrypt(String plainData, byte[] key) throws Exception { Cipher aesCipher = Cipher.getInstance("AES"); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); aesCipher.init(Cipher.ENCRYPT_MODE, keySpec); byte[] byteDataToEncrypt = plainData.getBytes(); byte[] byteCipherText = aesCipher.doFinal(byteDataToEncrypt); return new BASE64Encoder().encode(byteCipherText); } public static String decrypt(String cipherData, byte[] key) throws Exception { byte[] data = new BASE64Decoder().decodeBuffer(cipherData); SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.DECRYPT_MODE, keySpec); byte[] plainData = aesCipher.doFinal(data); return new String(plainData); } } 

试试这个

  byte[] data = new BASE64Decoder().decodeBuffer(cipherData); Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.DECRYPT_MODE, secretKeyUsed while encrypting); byte[] plainData = aesCipher.doFinal(data); return new String(plainData);