Не только указанная выше зашифрованная строка не может быть расшифрована со стороны клиента. Но также его нельзя расшифровать на следующем веб-сайте. https://www.devglan.com/online-tools/aes-encryption-decryption
ошибка, которую я получаю, когда пытаюсь расшифровать на указанном выше веб-сайте, - это
ошибка: данный последний блок не заполнен должным образом. Такие проблемы могут возникнуть, если во время дешифрования используется неверный ключ.
PS: Я устанавливаю секретный ключ как stati c для целей тестирования.
package com.snapwork.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import com.sun.mail.util.ASCIIUtility;
import javax.crypto.spec.IvParameterSpec;
public class AES {
private static SecretKeySpec secretKey;
private static byte[] key ;
private static byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
private static IvParameterSpec ivspec;
public static void setKeyAndIV(String myKey)
{
MessageDigest sha = null;
ivspec = new IvParameterSpec("39d0a599ea7c1761".getBytes());
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-256");
key = sha.digest(key);
secretKey = new SecretKeySpec(key, "AES");
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(String strToEncrypt, String secret)
{
try
{
setKeyAndIV(secret);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
catch (Exception e)
{
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
public static String decrypt(String strToDecrypt, String secret)
{
try
{
setKeyAndIV(secret);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec);
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
}
catch (Exception e)
{
System.out.println("Error while decrypting: " + e.toString());
}
return null;
}
public static void main(String[] args)
{
final String myKey = "8e990516e545ba4103dcb32a3462c54b";
String fullName = "ANURAG"; String mobileNumber = "9930858174"; String
emailId = "xyz@gmail.com"; String custIdentifier = "4127672700000765";
String availableCredits = "9815646465"; String eligibleOfferTag = "94913";
String inputString = fullName + "|" + mobileNumber + "|" + emailId + "|" + custIdentifier + "|" + availableCredits + "|" + eligibleOfferTag;
String decryptedString = AES.encrypt(inputString, myKey) ;
System.out.println(decryptedString);
}
}