密码学02--go语言与对称加密算法的实现

本文介绍了如何在Go语言中实现对称加密算法,特别是DES和AES。文章探讨了算法选择,强调了CBC和CTR作为安全性较高的分组模式,并提供了使用DES+CBC和AES+CTR的加密解密模板及其执行结果。
摘要由CSDN通过智能技术生成

1.致谢

非常感谢Go语言中文网这个开源社区所提供的有关Go语言各种接口的文档说明:https://studygolang.com/pkgdoc

2.对称加密算法在go语言中的实现分析

2.1 算法选择

这里仅针对DES和AES加密算法来做了测试,因为3DES的结构逻辑和DES几乎完全相同

2.2 分组模式

这里选择了CBC和CTR两种安全性比较高的分组模式,而没有选择ECB、CFB和OFB。当然ECB和CBC结构类似,而CFB和OFB与CTR类似,所以经验可以完全照搬即可。

2.3 go语言中对称加密算法的【固有模式】

由于go语言对与对称加密算法的包提供的“太过于详细”,所以在go语言中进行对称加密算法几本可以按照几个固有的模式来进行就OK

//一、加密过程
//--------------------------------------------------------------------------------
//(1)选择一种算法,创建一个底层使用的des/3des/aes的密码接口
//a.创建并返回一个使用DES算法的cipher.Block接口。key参数指的是密钥,长度是8bit。返回的是一个cipher.Block
func NewCipher(key []byte) (cipher.Block, error)
//b.创建并返回一个使用TDEA算法的cipher.Block接口。
func NewTripleDESCipher(key []byte) (cipher.Block, error)
//c.创建一个cipher.Block接口。参数key为密钥,长度只能是16、24、32字节,用以选择AES-128、AES-192、AES-256。
func NewCipher(key []byte) (cipher.Block, error)

//返回值Block接口代表一个使用特定密钥的底层块加/解密器。它提供了加密和解密独立数据块的能力。
/*
type Block interface {
    // 返回加密字节块的大小
    BlockSize() int
    // 加密src的第一块数据并写入dst,src和dst可指向同一内存地址
    Encrypt(dst, src []byte)
    // 解密src的第一块数据并写入dst,src和dst可指向同一内存地址
    Decrypt(dst, sr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值