golang最新版怎么使用DES加密算法
在Golang中使用DES加密算法,可以使用crypto/des包。下面是一个示例代码:
package main
import (
"crypto/cipher"
"crypto/des"
"fmt"
)
func main() {
key := []byte("01234567") // 8字节的密钥
plaintext := []byte("Hello, World!") // 需要加密的明文
block, err := des.NewCipher(key)
if err != nil {
fmt.Println(err)
return
}
// 加密
ciphertext := make([]byte, len(plaintext))
ecb := cipher.NewCBCEncrypter(block, key)
ecb.CryptBlocks(ciphertext, plaintext)
fmt.Printf("加密后的数据:%x\n", ciphertext)
// 解密
decrypted := make([]byte, len(ciphertext))
ecb = cipher.NewCBCDecrypter(block, key)
ecb.CryptBlocks(decrypted, ciphertext)
fmt.Printf("解密后的数据:%s\n", decrypted)
}
请注意,DES加密算法已经不再安全,不推荐使用。更安全的替代算法是AES。如果需要使用AES加密算法,可以使用crypto/aes包。示例代码如下:
package main
import (
"crypto/aes"
"crypto/cipher"
"fmt"
)
func main() {
key := []byte("0123456789abcdef0123456789abcdef") // 32字节的密钥
plaintext := []byte("Hello, World!") // 需要加密的明文
block, err := aes.NewCipher(key)
if err != nil {
fmt.Println(err)
return
}
// 加密
ciphertext := make([]byte, len(plaintext))
iv := []byte("0123456789abcdef") // 16字节的初始向量
cbc := cipher.NewCBCEncrypter(block, iv)
cbc.CryptBlocks(ciphertext, plaintext)
fmt.Printf("加密后的数据:%x\n", ciphertext)
// 解密
decrypted := make([]byte, len(ciphertext))
cbc = cipher.NewCBCDecrypter(block, iv)
cbc.CryptBlocks(decrypted, ciphertext)
fmt.Printf("解密后的数据:%s\n", decrypted)
}
注意,在使用AES加密算法时,密钥长度可以是16、24或32字节。初始向量(IV)的长度必须是16字节
原文地址: http://www.cveoy.top/t/topic/i0Kd 著作权归作者所有。请勿转载和采集!