Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menyahsulit teks yang disulitkan AES yang dihasilkan di Golang menggunakan Java dan Scala?

Bagaimana untuk menyahsulit teks yang disulitkan AES yang dihasilkan di Golang menggunakan Java dan Scala?

Barbara Streisand
Barbara Streisandasal
2024-10-29 20:02:02834semak imbas

How to decrypt AES encrypted text generated in Golang using Java and Scala?

Penyulitan AES dalam Golang dan Penyahsulitan dalam Java

Menyahsulit Teks Disulitkan AES dalam Java

Untuk menyahsulit teks yang disulitkan AES yang dijana oleh fungsi Golang, pelaksanaan Java diperlukan. Kod Java di bawah menunjukkan proses penyahsulitan:

<code class="java">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();
        }
    }
}</code>

Kod Java ini sepatutnya berjaya menyahsulit teks yang disulitkan yang dijana oleh fungsi Golang dan mengembalikan teks biasa asal.

Versi Scala

Versi Scala kod penyahsulitan adalah seperti berikut:

<code class="scala">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)
    }
}</code>

Kod Scala ini juga akan menyahsulit teks yang disulitkan AES dan mencetak plaintext.

Atas ialah kandungan terperinci Bagaimana untuk menyahsulit teks yang disulitkan AES yang dihasilkan di Golang menggunakan Java dan Scala?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn