对称加密算法之aes算法+分组迭代模式之CTR模式加密

 

 

 

 

package main

import (
	"bytes"
	"crypto/aes"
	"crypto/cipher"
	"fmt"
)

//aes是对称加密算法的一种,Ctr是分组迭代模式的一种,需要初始向量,使用了流密钥而非分组密钥

func aesEncrypt(plainText, key []byte) ([]byte, error) {

	//1 创建aes密码接口 go内置aes包
	block, err := aes.NewCipher(key)
	if err != nil {
		return nil, err
	}
	fmt.Println("打印aes算法的分组长度:", block.BlockSize())
	//2 创建分组的迭代模式 需要初始化向量  返回一个流密钥
	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 aesDecrypt(encryptData, key []byte) ([]byte, error) {
	return aesEncrypt(encryptData, key)
}
func main() {
	src := "你好吗你好吗你好吗你好吗"
	key := []byte("1234567887654321")
	encryptData, err := aesEncrypt([]byte(src), key)
	if err != nil {
		fmt.Println("加密错误:", err)
		return
	}
	fmt.Printf("加密后数据:%x\n", encryptData)

	plaintText, err := aesDecrypt(encryptData, key)
	if err != nil {
		fmt.Println("解密错误:", err)
	}
	fmt.Printf("解密后数据:%s\n", plaintText)
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值