Я пытаюсь скопировать код Java для шифрования AES в Golang.
Однако я не получаю такой же вывод в Голанге
Я пробовал ниже код:
Java-код:
package EncryptionTest;
import java.security.Key;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class EncryptionDecryptionAES {
static Cipher cipher;
public static void main(String[] args) throws Exception {
Key secretKey;
secretKey = (Key)new SecretKeySpec("0123456789012345".getBytes(), "AES");
cipher = Cipher.getInstance("AES");
String plainText = "AES Symmetric Encryption Decryption";
System.out.println("Plain Text Before Encryption: " + plainText);
String encryptedText = encrypt(plainText, secretKey);
System.out.println("Encrypted Text After Encryption: " + encryptedText);
String decryptedText = decrypt(encryptedText, secretKey);
System.out.println("Decrypted Text After Decryption: " + decryptedText);
}
public static String encrypt(String plainText, Key secretKey) throws Exception {
byte[] plainTextByte = plainText.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedByte = cipher.doFinal(plainTextByte);
Base64.Encoder encoder = Base64.getEncoder();
String encryptedText = encoder.encodeToString(encryptedByte);
return encryptedText;
}
public static String decrypt(String encryptedText, Key secretKey) throws Exception {
Base64.Decoder decoder = Base64.getDecoder();
byte[] encryptedTextByte = decoder.decode(encryptedText);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedByte = cipher.doFinal(encryptedTextByte);
String decryptedText = new String(decryptedByte);
return decryptedText;
}
}
Вывод кода Java:
Обычный текст перед шифрованием: дешифрование симметричного шифрования AES
Зашифрованный текст после шифрования: vSmrgH3qU + qEq + 3ui0YvwCa6PDBcMyhgOlbh3 + zzM + cON6feLk2u1iPW7lITD3vn
Расшифрованный текст после расшифровки: AES Симметричное шифрование Расшифровка
Код Голанга:
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
const NONCESIZE = 12
func main() {
key := []byte("0123456789012345")
plaintext := []byte("AES Symmetric Encryption Decryption")
block, err := aes.NewCipher(key)
if err != nil {
panic(err.Error())
}
nonce := make([]byte, NONCESIZE)
aesgcm, err := cipher.NewGCM(block)
if err != nil {
panic(err.Error())
}
ciphertext := aesgcm.Seal(nil, nonce, plaintext, nil)
fmt.Println("Encrypted Text is : ", base64.StdEncoding.EncodeToString(ciphertext))
}
Вывод кода Голанга:
Зашифрованный текст: 7UMh49c5Wqb2BzlttKBEnq5g4fxMK9oJs1EUDIgWzVwlY28k + qd / oFG9SJckBsaX6DHp