AES 加密

shensi · · 1706 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

``` import (     "bytes"     "crypto/aes"     "fmt"     "crypto/cipher"     "encoding/base64" ) func main() {     orig := "hello world"     key := "123456781234567812345678"     fmt.Println("原文:", orig)     encryptCode := AesEncrypt(orig, key)     fmt.Println("密文:" , encryptCode)     decryptCode := AesDecrypt(encryptCode, key)     fmt.Println("解密结果:", decryptCode) } func AesEncrypt(orig string, key string) string {     // 转成字节数组     origData := []byte(orig)     k := []byte(key)     // 分组秘钥     block, _ := aes.NewCipher(k)     // 获取秘钥块的长度     blockSize := block.BlockSize()     // 补全码     origData = PKCS7Padding(origData, blockSize)     // 加密模式     blockMode := cipher.NewCBCEncrypter(block, k[:blockSize])     // 创建数组     cryted := make([]byte, len(origData))     // 加密     blockMode.CryptBlocks(cryted, origData)     return base64.StdEncoding.EncodeToString(cryted) } func AesDecrypt(cryted string, key string) string {     // 转成字节数组     crytedByte, _ := base64.StdEncoding.DecodeString(cryted)     k := []byte(key)     // 分组秘钥     block, _ := aes.NewCipher(k)     // 获取秘钥块的长度     blockSize := block.BlockSize()     // 加密模式     blockMode := cipher.NewCBCDecrypter(block, k[:blockSize])     // 创建数组     orig := make([]byte, len(crytedByte))     // 解密     blockMode.CryptBlocks(orig, crytedByte)     // 去补全码     orig = PKCS7UnPadding(orig)     return string(orig) } //补码 func PKCS7Padding(ciphertext []byte, blocksize int) []byte {     padding := blocksize - len(ciphertext)%blocksize     padtext := bytes.Repeat([]byte{byte(padding)}, padding)     return append(ciphertext, padtext...) } //去码 func PKCS7UnPadding(origData []byte) []byte {     length := len(origData)     unpadding := int(origData[length-1])     return origData[:(length - unpadding)] } ``` 参考: https://www.jb51.net/article/245521.htm

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1706 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传