Heim >Backend-Entwicklung >Golang >Wie entschlüssele ich AES-verschlüsselten Text in Java und Scala angesichts der Golang-Verschlüsselung?
Die in der Frage bereitgestellte Golang-Verschlüsselungsfunktion für AES verschlüsselt eine Zeichenfolge mithilfe des Advanced Encryption Standard (AES)-Algorithmus. Erstellen eines Geheimtextes in Base64-Kodierung. Um diesen Chiffretext in Java zu entschlüsseln, benötigen wir eine entsprechende Entschlüsselungsfunktion.
<code class="java">import java.util.Base64; import javax.crypto.*; import javax.crypto.spec.*; public class AESDecryption { public static String decode(String base64Text, byte[] key) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, 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); } public static void main(String[] args) { // Encryption result from the Go function. String base64Text = "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0="; // The encryption key (same as in Go). byte[] key = "0123456789abcdef".getBytes(); try { // Decrypt the ciphertext. String decrypted = decode(base64Text, key); // Print the decrypted text. System.out.println(decrypted); } catch (Exception e) { e.printStackTrace(); } } }</code>
<code class="scala">import java.nio.charset.StandardCharsets import javax.crypto._ import javax.crypto.spec.{IvParameterSpec, SecretKeySpec} import java.util.Base64 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), StandardCharsets.UTF_8) } def main(args: Array[String]): Unit = { // Encryption result from the Go function. val base64Text = "c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0=" // The encryption key (same as in Go). val key = "0123456789abcdef" // Decrypt the ciphertext. val decrypted = decode(base64Text, key) // Print the decrypted text. println(decrypted) } }</code>
Sowohl die Java- als auch die Scala-Entschlüsselung Funktionen nehmen den Chiffretext und den Schlüssel als Eingabe, entschlüsseln den Chiffretext mit dem AES/CFB/NoPadding-Algorithmus und geben den entschlüsselten Klartext als String zurück.
Das obige ist der detaillierte Inhalt vonWie entschlüssele ich AES-verschlüsselten Text in Java und Scala angesichts der Golang-Verschlüsselung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!