AES Encryption in Golang and Decryption in Java
Decrypting AES Encrypted Text in Java
To decrypt the AES encrypted text generated by the Golang function, a Java implementation is required. The Java code below demonstrates the decryption process:
public class AESDecryption {
public static String decode(String base64Text, byte[] key) throws Exception {
byte[] inputArr = Base64.getUrlDecoder().decode(base64Text);
SecretKeySpec skSpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CFB/NoPadding");
int blockSize = cipher.getBlockSize();
IvParameterSpec iv = new IvParameterSpec(Arrays.copyOf(inputArr, blockSize));
byte[] dataToDecrypt = Arrays.copyOfRange(inputArr, blockSize, inputArr.length);
cipher.init(Cipher.DECRYPT_MODE, skSpec, iv);
byte[] result = cipher.doFinal(dataToDecrypt);
return new String(result, StandardCharsets.UTF_8);
}
public static void main(String[] args) {
try {
String encryptedText = "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0=";
byte[] key = "0123456789abcdef".getBytes();
String decryptedText = decode(encryptedText, key);
System.out.println("Decrypted text: " decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}
}
This Java code should successfully decrypt the encrypted text generated by the Golang function and return the original plaintext.
Scala Version
The Scala version of the decryption code is as follows:
object AESDecryption {
def decode(input: String, key: String): String = {
val cipher = Cipher.getInstance("AES/CFB/NoPadding")
val blockSize = cipher.getBlockSize()
val keyBytes = key.getBytes()
val inputArr = Base64.getUrlDecoder().decode(input)
val skSpec = new SecretKeySpec(keyBytes, "AES")
val iv = new IvParameterSpec(inputArr.slice(0, blockSize).toArray)
val dataToDecrypt = inputArr.slice(blockSize, inputArr.size)
cipher.init(Cipher.DECRYPT_MODE, skSpec, iv)
new String(cipher.doFinal(dataToDecrypt.toArray))
}
def main(args: Array[String]): Unit = {
val encryptedText = "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0="
val key = "0123456789abcdef"
val decryptedText = decode(encryptedText, key)
println("Decrypted text: " decryptedText)
}
}
This Scala code will also decrypt the AES encrypted text and print the plaintext.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3