Wie entschlüssele ich AES-verschlüsselten Text in Java, wenn er in Go verschlüsselt ist?

DDD
Freigeben: 2024-10-26 16:57:30
Original
816 Leute haben es durchsucht

How to Decrypt AES-Encrypted Text in Java When Encrypted in Go?

AES-Verschlüsselung in Go und Entschlüsselung in Java

Frage:

Ich habe Text erfolgreich mit AES in Go verschlüsselt. Allerdings stehe ich vor Herausforderungen beim Entschlüsseln des verschlüsselten Textes in Java. Können Sie uns dabei helfen, den Java-Entschlüsselungsablauf und einen funktionierenden Java-Decoder zu verstehen?

Antwort:

Java-Decoder:

<code class="java">import java.nio.charset.StandardCharsets;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.IvParameterSpec;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKeySpec;

public class AesDecrypter {

    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);
    }

}</code>
Nach dem Login kopieren

Scala-Decoder:

<code class="scala">import java.nio.charset.StandardCharsets
import javax.crypto._
import java.security.spec.IvParameterSpec
import java.security.spec.SecretKeySpec
import java.util.Base64

object AesDecrypter {
  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))
  }
}</code>
Nach dem Login kopieren

Demo:

Zu Demonstrationszwecken kodieren wir die Zeichenfolge „Testtext 123“ mit die in Go geschriebene Verschlüsselungsfunktion und entschlüsseln Sie sie mit der in Java (oder Scala) geschriebenen Entschlüsselungsfunktion:

// Go encoder
key := []byte("0123456789abcdef")
text := "test text 123"
encryptedText := encrypt(key, text)
println(encryptedText) // prints c1bpFhxn74yzHQs-vgLcW6E5yL8zJfgceEQgYl0=

// Java decoder
byte[] keyBytes = "0123456789abcdef".getBytes();
String decodedText = AesDecrypter.decode(encryptedText, keyBytes);
System.out.println(decodedText); // prints test text 123

// Scala decoder
val decodedText = AesDecrypter.decode(encryptedText, "0123456789abcdef")
println(decodedText) // prints test text 123
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entschlüssele ich AES-verschlüsselten Text in Java, wenn er in Go verschlüsselt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!