大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
DES(Data Encryption Standard)是一种常见的分组加密算法,由IBM公司在1971年提出。它是一种对称加密算法,也就是说它使用同一个密钥来加密和解密数据。
创新互联建站于2013年开始,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元巴里坤哈萨克做网站,已为上家服务,为巴里坤哈萨克各地企业和个人服务,联系电话:18980820575
DES使用一个56位的初始密钥,但是这里提供的是一个64位的值,这是因为在硬件实现中每8位可以用于奇偶校验。可以通过设定8位字符串,由 crypto/des 库的 des.NewCipher(key) 函数生成密钥
DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。常用的填充算法有 pkcs5 , zero 等
对称加密有非常好的安全性,其加解密计算的性能也较高,但其有两个重要缺点:
在如今开放的信息社会,秘钥的管理愈加困难,非公开的秘钥机制虽然破解较难,但还是有遭到攻击的可能性,由于对称加密需要加解密双方共同握有私钥,所有生成秘钥的一方必须分发给另一方才能进行安全通行,这就难免秘钥在网络中传输,网络是不可靠的,其有可能被拦截或篡改。于是就产生了公开秘钥体制,即服务方根据特定算法产生一对钥匙串,自己持有私钥小心保存,而公钥公开分发,在通信中,由公钥加密进行网络传输,而传输的信息只能由私钥解密,这就解决了秘钥分发的问。公开秘钥体制就是非对称加密,非对称加密一般有两种用途:
如今的非对称加密比较可靠的有RSA算法和ECC算法(椭圆曲线算法),RSA的受众最多,但近年来随着比特币、区块链的兴起,ECC加密算法也越来越受到青睐。下面我们先介绍一下RSA加密算法的使用,ECC我们下一讲展开。
公钥密码体系都是要基于一个困难问题来保证其安全性的,RSA是基于大数分解,将一个即使是计算机也无能为力的数学问题作为安全壁垒是现代密码学的实现原理。讲述这类数学问题需要庞杂的数论基础,此相关部分在此不再展开,感兴趣的请出门右拐搜索欧几里得证明、欧拉函数等数论部分知识。
Go标准库中crypto/rsa包实现了RSA加解密算法,并通过crypto/x509包实现私钥序列化为ASN.1的DER编码字符串的方法,我们还使用编解码包encoding/pem(实现了PEM数据编码,该格式源自保密增强邮件协议,目前PEM编码主要用于TLS密钥和证书。)将公私钥数据编码为pem格式的证书文件。
使用以上加解密方法:
椭圆曲线密码学(英语:Elliptic Curve Cryptography,缩写:ECC)是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。
ECC的主要优势是在某些情况下它比其他的算法(比如RSA加密算法)使用更小的密钥并提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。
不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
加解密流程图:
使用CBC模式+PKCS7 填充方式实现AES的加密和解密