ホームページ > バックエンド開発 > Golang > Java と Scala を使用して Golang で生成された AES 暗号化テキストを復号するにはどうすればよいですか?

Java と Scala を使用して Golang で生成された AES 暗号化テキストを復号するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-29 20:02:02
オリジナル
819 人が閲覧しました

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

Golang での AES 暗号化と Java での復号化

Java での AES 暗号化テキストの復号化

Golang 関数によって生成された AES 暗号化テキストを復号するには、Java 実装が必要です。以下の Java コードは、復号プロセスを示しています。

<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>
ログイン後にコピー

この Java コードは、Golang 関数によって生成された暗号化テキストを正常に復号し、元の平文を返します。

Scala バージョン

復号コードの Scala バージョンは次のとおりです:

<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>
ログイン後にコピー

この Scala コードは、AES 暗号化テキストも復号し、平文を出力します。

以上がJava と Scala を使用して Golang で生成された AES 暗号化テキストを復号するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート