Cifrado AES en Golang y descifrado en Java
Descifrado de texto cifrado AES en Java
Para descifrar el texto cifrado AES generado por la función Golang, se requiere una implementación de Java. El siguiente código Java demuestra el proceso de descifrado:
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();
}
}
}
Este código Java debería descifrar correctamente el texto cifrado generado por la función Golang y devolver el texto sin formato original.
Versión Scala
La versión Scala del código de descifrado es el siguiente:
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)
}
}
Este código Scala también descifrará el texto cifrado AES e imprimirá el texto sin formato.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3