golang crypt包的AES加密函数的使用

Python021

golang crypt包的AES加密函数的使用,第1张

golang AES加密函数的使用

AES: Advanced Encryption Standard

高阶加密标准,是用来代替 老的DES的。

AES加密算法的加密块必须是16字节(128bit),所以不足部分需要填充,常用的填充算法是PKCS7。

AES加密算法的key可以是16字节(AES128),或者24字节(AES192),或者是32字节(AES256)

ECB:Electronic Codebook Book

CBC:Cipher Block Chaining:这是最常见的块加密实现

CTR:Counter

CFB:Cipher FeedBack

OFB:Output FeedBack

具体的差异我也没去弄明白,知道这么个意思,加密算法稍后差异。

包括AES,CBC,CTR,OFB,CFB,GCM。

这其中GCM不需要加密块必须16字节长度,可以是任意长度,其他的都需要16字节对其,所以不足部分都需要补充。

3.1 AES

3.2 CBC

3.3 CTR

3.4 OFB

3.5 CFB

3.6 GCM

GCM实现算法不需要pad。

AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。

加解密流程图:

使用CBC模式+PKCS7 填充方式实现AES的加密和解密

1.Docker项目

网址为 https://github.com/docker/docker 。

介绍:Docker是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker可以在一台物理服务器上快速运行一个或多个实例。例如,启动一个Cent OS操作系统,并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效。

2.golang项目

网址为 https://github.com/golang/go 。

介绍:Go语言的早期源码使用C语言和汇编语言写成。从Go 1.5版本自举后,完全使用Go语言自身进行编写。Go语言的源码对了解Go语言的底层调度有极大的参考意义,建议希望对Go语言有深入了解的读者读一读。

3.Kubernetes项目

网址为 https://github.com/kubernetes/kubernetes 。

介绍:Google公司开发的构建于Docker之上的容器调度服务,用户可以通过Kubernetes集群进行云端容器集群管理。

4.etcd项目

网址为 https://github.com/coreos/etcd 。

介绍:一款分布式、可靠的KV存储系统,可以快速进行云配置。

5.beego项目

网址为 https://github.com/astaxie/beego 。

介绍:beego是一个类似Python的Tornado框架,采用了RESTFul的设计思路,使用Go语言编写的一个极轻量级、高可伸缩性和高性能的Web应用框架。

6.martini项目

网址为 https://github.com/go-martini/martini 。

介绍:一款快速构建模块化的Web应用的Web框架。

7.codis项目

网址为 https://github.com/Codis Labs/codis。

介绍:国产的优秀分布式Redis解决方案。

8.delve项目

网址为 https://github.com/derekparker/delve 。

介绍:Go语言强大的调试器,被很多集成环境和编辑器整合。