golang aes utf 8

发布时间:2024-07-05 00:39:38

Golang AES加密与解密实现

AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于各种安全领域。Golang提供了标准库crypto/aes来实现AES加密和解密的操作。

1. 加密数据

在Golang中,使用crypto/aes标准库提供的NewCipher函数可以创建一个AES加密器。根据密钥的不同长度(128位、192位或256位),可以选择相应的AES加密器。

要加密数据,我们首先需要将明文转换为字节数组,并创建一个长度为块大小(16字节)的字节数组,用于存储加密后的结果。

// 创建AES加密器
cipher, _ := aes.NewCipher([]byte(key))

// 将明文转换为字节数组
plaintext := []byte("Hello, Go!")

// 创建一个长度为块大小的字节数组
ciphertext := make([]byte, aes.BlockSize)

接下来,我们可以使用加密器进行加密操作。调用加密器的Encrypt方法传入明文和存储加密结果的字节数组即可完成加密。

// 加密操作
cipher.Encrypt(ciphertext, plaintext)

2. 解密数据

解密数据与加密数据的处理方式相似。同样地,我们需要一个AES解密器和一个长度为块大小的字节数组来存储解密结果。

首先,我们创建一个AES解密器。和加密器一样,解密器也可以根据密钥的长度选择相应的AES解密器。

// 创建AES解密器
decipher, _ := aes.NewCipher([]byte(key))

// 创建一个长度为块大小的字节数组
deciphertext := make([]byte, aes.BlockSize)

然后,我们可以使用解密器进行解密操作。调用解密器的Decrypt方法传入密文和存储解密结果的字节数组即可完成解密。

// 解密操作
decipher.Decrypt(deciphertext, ciphertext)

3. 完整示例代码

下面是一个完整的示例代码,演示了如何使用Golang的crypto/aes标准库进行AES加密和解密操作。

package main

import (
	"crypto/aes"
	"encoding/base64"
	"fmt"
)

func main() {
	key := "0123456789abcdef"

	// 创建AES加密器
	cipher, _ := aes.NewCipher([]byte(key))
	plaintext := []byte("Hello, Go!")
	ciphertext := make([]byte, aes.BlockSize)

	// 加密操作
	cipher.Encrypt(ciphertext, plaintext)
	encrypted := base64.StdEncoding.EncodeToString(ciphertext)
	fmt.Println("加密结果:", encrypted)

	// 创建AES解密器
	decipher, _ := aes.NewCipher([]byte(key))
	deciphertext := make([]byte, aes.BlockSize)

	// 解密操作
	decipher.Decrypt(deciphertext, ciphertext)
	decrypted := string(deciphertext)
	fmt.Println("解密结果:", decrypted)
}

4. 总结

通过Golang的crypto/aes标准库,我们可以方便地实现AES加密和解密的操作。加密和解密的过程都需要一个密钥和待处理的数据,使用加密器和解密器即可完成相应的操作。

相关推荐