DES加密算法原理:
DES算法使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。是一个迭代的分组密码,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES使用16轮循环,使用异或,置换,代换,移位操作四种基本运算。
我们在开发中常会遇到这种需求:通信的两端需要传输安全级别较高的数据,这需要我们传输的加密数据既要难以破解,又要可逆的解密过程。哈希算法虽难以破解,但并非适用于通信中的加解密传输。这就需要基于秘钥管理的加密技术了。对称加密是最简单快速的加密方式,所谓对称加密,即加解密双方都掌握相同的秘钥,通过同一秘钥完成加解密操作。常用的对称加密算法有:
Go标准库中的加密相关包都有相应的支持,下面我们来逐一演示:
所以要实现DES加密需要准备如下要求:
以上,秘钥和初始化向量值需要自己管理,末尾分组的填充算法和删除算法需要自己实现。下面我们实现一个填充算法和删除算法:
以上实现思路为:计算出最后一个分组需要填充的字节数(1-8),并把这个数作为需要填充的占位符,再把填充后的分组与源数据拼接就得到待加密的字符串。
Go通过crypto/des包支持DES加密算法:
使用以上加解密方法:
以上就是Go 中DES的加解密实现,可见其加密的安全性依赖于秘钥的管理,而且其只有64Bit的秘钥长度在算力越来越高的现在已经不够安全了,这也是对称加密的弱点,在实际的网络项目中,秘钥的分发需要依赖其他方式的配合。
对于DES秘钥较弱的问题做了一些改进,这就是三重DES加密算法,其原理与DES类似,唯一不同的是秘钥从一组八字节变成三组二十四字节(192Bit)。其加密强度也和秘钥设置相关,此处演示我们也用CBC分组模式,三重加密执行顺序分别为,加密->解密->加密。
为了兼容DES,只有当秘钥一组和秘钥二组相同时,3DES其加密安全性和DES相同,其余秘钥的分组设置都是三重DES加密。
使用以上加解密方法:
随着时代的发展,DES和3DES于现今的算力和性能要求来说已经逐渐落伍,为了适应更高的安全性和性能需要,业界采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。这就是AES对称加密算法,在现今的项目开发中,建议使用这种加密方式。
AES的基本要求是,采用对称分组密码体制,密钥的长度最少支持为128、192、256,分组长度128位。
所以要实现AES加密需要准备如下要求:
Go通过crypto/aes包支持DES加密算法:
以上,其用法和DES差不多,只不过秘钥管理稍微不同而已。
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有