我的目标是使用AES加密字符串我使用Base64进行加密,因为AES需要一个字节数组作为输入.此外,我希望正确存储每个可能的Char(包括中文和德文符号)
byte[] encryptedBytes = Base64.decodeBase64 ("some input");
System.out.println(new Base64().encodeToString(encryptedBytes));
Run Code Online (Sandbox Code Playgroud)
我认为应该打印"一些输入".而是打印"someinpu".我不可能使用sun.misc.*而是使用apache.commons.codec
有人知道出了什么问题吗?
如果我使用错误的密钥或错误的盐进行解密,则抛出BadPaddingException.我希望返回一个不正确的字符串.doFinal()在decrypt-method中导致异常
信息 : This is just an example
Unfug: '?Ù?„SåF?V®ßs.k?·ºç€èÀH?f?ÙÉÕ
Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at casino.AES.decryptString(AES.java:130)
at casino.AES.main(AES.java:172)
Run Code Online (Sandbox Code Playgroud)
public static void main(String[] args) throws Exception {
//Encryption
AES encr = new AES();
encr.setKey("KEY");
encr.setSalt("SALT");
encr.setup();
String message = "This is just an example";
System.out.println("Message : " + message);
byte[] code = encr.encrypt(message);
System.out.println("Encrypted Strinng : "+ new String(code, "UTF-8"));
//Decryption
AES dec = new AES(); …
Run Code Online (Sandbox Code Playgroud)