前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言 加密系列之AES

Golang语言 加密系列之AES

作者头像
李海彬
发布2018-03-21 10:06:53
1.1K0
发布2018-03-21 10:06:53
举报
文章被收录于专栏:Golang语言社区Golang语言社区

加密代码:

代码语言:javascript
复制
func Encrypt(plantText, key []byte) ([]byte, error) {
   block, err := aes.NewCipher(key) //选择加密算法
   if err != nil {
      return nil, err
   }
   plantText = PKCS7Padding(plantText, block.BlockSize())

   blockModel := cipher.NewCBCEncrypter(block, key)

   ciphertext := make([]byte, len(plantText))

   blockModel.CryptBlocks(ciphertext, plantText)
   return ciphertext, nil
}

func PKCS7Padding(ciphertext []byte, blockSize int) []byte {
   padding := blockSize - len(ciphertext)%blockSize
   padtext := bytes.Repeat([]byte{byte(padding)}, padding)
   return append(ciphertext, padtext...)
}

解密代码:

代码语言:javascript
复制
func Decrypt(ciphertext, key []byte) ([]byte, error) {
   keyBytes := []byte(key)
   block, err := aes.NewCipher(keyBytes) //选择加密算法
   if err != nil {
      return nil, err
   }
   blockModel := cipher.NewCBCDecrypter(block, keyBytes)
   plantText := make([]byte, len(ciphertext))
   blockModel.CryptBlocks(plantText, ciphertext)
   plantText = PKCS7UnPadding(plantText, block.BlockSize())
   return plantText, nil
}

func PKCS7UnPadding(plantText []byte, blockSize int) []byte {
   length := len(plantText)
   unpadding := int(plantText[length-1])
   return plantText[:(length - unpadding)]
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档