Maison  >  Article  >  développement back-end  >  Comment puis-je déchiffrer les données cryptées AES en Java et Scala, étant donné que les données ont été cryptées en Golang avec une clé de 128 bits ?

Comment puis-je déchiffrer les données cryptées AES en Java et Scala, étant donné que les données ont été cryptées en Golang avec une clé de 128 bits ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 04:05:29517parcourir

How can I decrypt AES-encrypted data in Java and Scala, given that the data was encrypted in Golang with a 128-bit key?

Cryptage AES en Golang et décryptage en Java

Le code Golang fourni crypte les données à l'aide de l'algorithme AES avec une clé de 128 bits. Pour décrypter ces données, nous pouvons utiliser un décodeur Java similaire pour assurer la compatibilité entre les deux langages.

Java Decoder

<code class="java">String decode(String base64Text, byte[] key) throws InvalidAlgorithmParameterException,NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
    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);
}</code>

Scala Decoder

<code class="scala">def decode(input:String, key: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))
}</code>

Utilisation

Pour décrypter le texte crypté, utilisez le décodeur Java ou Scala fourni. Par exemple, si le texte chiffré est "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0=" et que la clé est "0123456789abcdef", le texte déchiffré serait "texte de test 123".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn