go实现AES+CTR

go实现AES+CTR

加密算法:aes

密钥:16
分组长度:16

分组模式:ctr

不需要填充

package main

import (
	"bytes"
	"crypto/aes"
	"crypto/cipher"
	"fmt"
)
//加密
func aesCtrEncrypt(plainText []byte, key []byte) ([]byte, error) {
	//TODO
	//aes包,go内置标准库

	//1. 创建cipher.Block接口
	block, err := aes.NewCipher(key)
	if err != nil {
		return nil, err
	}
	//2. 创建分组模式,在crypto/cipher包中
	iv := bytes.Repeat([]byte("1"), block.BlockSize())
	stream := cipher.NewCTR(block, iv)
	//3. 加密
	dst := make([]byte, len(plainText))
	stream.XORKeyStream(dst, plainText)

	return dst, nil
}

//解密
func aesCtrDecrypt(encryptData []byte, key []byte) ([]byte, error) {
	return aesCtrEncrypt(encryptData, key)
}


func main() {
	src := "你好"
	fmt.Println("原文:", src)
	//16byte密钥
	key := []byte("123
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值