go语言数字信封解密
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
//解密函数,传入参数为加密后的字符串和秘钥
func Decrypt(crypted string, key string) string {
//将秘钥转换成字节流
k := []byte(key)
//将加密过的字符串用base64进行解码
cryptedByte, _ := base64.StdEncoding.DecodeString(crypted)
//创建一个新的AES接口,用于实例化一个AES加密器。AES-128使用16字节长度的密钥,而AES-256使用32字节长度的密钥。此处使用AES-128。
block, err := aes.NewCipher(k)
if err != nil {
panic(err) } //初始化一个切片,大小是块大小的2倍 iv := make([]byte, block.BlockSize()*2) if _, err := io.ReadFull(rand.Reader, iv); err != nil { panic(err) } mode := cipher.NewCBCDecrypter(block, iv[:block.BlockSize()]) mode.CryptBlocks(cryptedByte, cryptedByte) return fmt.Sprintf("%s", cryptedByte[:]) } func main() { fmt.Println("Go语言数字信封解密") fmt.Println("明文是:", Decrypt("EK9X6LhU7VZUjw3q6VF+NQ==", "1234567890123456"))}
AI智能问答网免责声明:
以上内容除特别注明外均来源于网友提问、ChatGPT回答,权益归原著者所有,本站仅作效果演示和欣赏之用;
若以上展示有冒犯或侵害到您,敬请联系我们进行删除处理,谢谢!