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!