SHA加密算法是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。
SHA加密算法原理
接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
SHA加密算法信息产生摘要的过程
SHA加密算法最大输入信息长度小于264位,产生的输出是长164位的信息摘要。输入按每组512位处理。
第一步、附加添凑位
对信息附加添凑位以便使它的长度等于448(模512)。即使信息已经达到需要的长度,也总是附加添凑位。因此,添凑位的长度范围是1至512位。添凑位由单个“1”后跟必要数目的“0”组成。
第二步、附加长度
将一个长64位的数据块附加到信息添凑位后,这个块被视为一个无符号的64位整数,而且包含了信息在附加添凑位之前的初始长度。
前面两步的结果是产生长度为512的整数倍的信息。用数字标记信息扩展后的512位分组序列Y0,Y1...YL-1,于是扩展后信息的总长度是LX512位。同样地,结果是16个32位字的整数倍。让M0,M1...MN-1代表结果信息字,N为16的整数倍,因此N=LX16。
第三步、初始化MD缓冲区
用一个160位的缓冲区存放哈希函数的中间结果和最终结果。这个缓冲区用5个32位寄存器(A,B,C,D,E)表示。这些寄存器初始化为如下的16进制值(高8位在前):
A=67452301
B=EFCDAB89
C=98BADCFE
D=10325476
E=C3D2E1FO
第四步、处理512位(16字)信息分组
SHA加密算法的核心是一个由80步处理组成的模块,这个模块在上图中标记为HSHA,它的逻辑如下图所示。这80步有相似的结构。
请注意每一层(round)的输入是当前正处理的512位分组YQ和值为ABCDE的160位缓冲区,并在每一层修改缓冲区的内容。再每一层中用到了一个辅助常数K1,K1只用到4个不同的常数值。这些值用16进制表示如图所示:
总之,对分组YQ,SHA加密算法以YQ和摘要的中间值MDQ作为输入。MDQ放在缓冲区ABCDE中,第80步的输出与MDQ相加以产生MDQ+1。这个加法是利用模232加法,由缓冲区5个字中的每一个字单独地与MDQ中相应的字相加完成。
第五步、输出
当所有的L个512位分组处理完后,从L阶段的输出是160位的信息摘要。
在每一层的逻辑中,每一层的形式是:
A,B,C,D,E—[CLS3(A)+FT(B,C,D)+E+WT+KT],A,CLS30(B),C,D
这里,A,B,C,D,E为缓冲区中的5个字;T代表层或步数字型,0≤T≤79;FT是一个简单逻辑函数;CLS3表示循环左移32位变量S位;WT是从当前输入512位分组中产生出来的;KT是一个辅助常数,用到了4个不同的值;“+”是模232加法。
每个简单函数32位输入,32位输出。每个函数执行一组“位位置逻辑”操作。也就是说,第N位输出是第N位3个输入的函数。正如你所见到的,只用到了3个不同的函数。对0≤T≤19,函数是条件函数:如果B那么C否则D。对20≤T≤39和60≤T≤79,函数产生奇偶校验位。对40≤T≤59,如果2个或3个变量值为TRUE,则函数值为TRUE。
现在剩下的是说明32位字WT如何从512位信息中产生。前16个WT的值直接取当前分组产生的16个字。剩下的WT值定义为:WT=WT-16 8 WT-14 8 WT-8 8 WT-3
这样,在前16层处理中,信息分组产生的输入由分组中的一个32位字组成。在余下的64层中,输入由一些信息分组中的字异或而成。
SHA可概述为:
MD0=IV
MDq+1=SUM32(MDq,ABCDEq)
MD=MDl-1
这里,IV为ABCDE缓冲区中的初始值,在第三步中定义;ABCDE为第Q个信息分组在最后一层处理的输出;L为信息(包括附加位和长度域)的分组数;SUM32代表输入的每一对字的独立的模232加法;MD等于最后的信息摘要值。
小知识之信息摘要:
信息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。
辛辛苦苦提拔起来的销冠,反手把公司卖了:内部人员泄密如何防范?从行为审计到技术锁死!
2026年硬核干货拆解,企业等保2.0怎么做才能快速通关?企业速通!
离职骨干连夜拷走十几个G,去新公司一双击全成废码:这套图纸加密方法简直绝杀!
研发骨干用几块钱的U盘卷走图纸:员工用U盘拷走图纸怎么办?企业自救方案!
军工软件源代码加密怎么做?五个超顶用的加密方法分享,分分钟教会你!
离职工程师把图纸塞进压缩包带走:图纸防泄密这一记反杀,让他去新公司立功的美梦当场碎掉!
销冠离职带走千万业务大盘?如何防范销售跳槽引发的企业资产与客户流失危机!
源代码加密软件哪个好?安企神软件透明加密+外发管控+权限分级三重守护!
企业数据防泄露措施有哪些?
企业数据防泄露措施有哪些?企业数据防泄露措施有哪些?找谁做?随着信息技术的不断发展,企业数据泄露事件频繁发生,给企业带来了巨大的经济损失和声誉损失。为了保护企业的核心数据,企业需要采取一系列的数据防泄露措施。本文将介绍企业数据防泄露的措施,帮助企业更好地保护数据安全。一、数据加密数据加密是一种常用的数据防泄露措施。通过...
最强干货:企业数据防泄密的26种实战方法
防止内部泄密的方法1、教育员工:不要低估员工教育的力量。CoSoSys的研究显示,60%的员工不知道哪些公司的数据是机密的。因此,他们可能会意外泄漏或使用不当。2、签署法律文件:很多企业在员工入职的时候,都会签署保密协议,尤其是开发人员这样的涉密人员,通过这种方式,可以一定程度上的防止员工主动泄密。3、文件加密:文件加...
如何规范上班时员工行为?
很多公司员工上班期间会打游戏、刷剧、看电影、炒股、干一些与工作无关的事,这极大的影响了公司的业绩和员工的工作效率和氛围。那么应该如何规范员工的行为呢?1、利用安企神软件对员工的办公电脑打游戏、刷剧、看电影、炒股等行为进行禁止。设置方法:打开策略模板管理 > 应用程序管控 > 然后勾选【开启程序黑白名单】然后...
四种屏幕防拍照、截屏、打印等数据泄露水印解决方案
信息媒体的数字化为信息的存取提供了极大的便利性,同时也显著提高了信息表达的效率和准确性。特别是随着计算机网络通讯技术的发展,数据的交换和传输变成了一个相对简单的过程,人们借助于计算机、数字扫描仪、打印机等电子设备可以方便、迅速地将数字信息传输到所期望的任何地方。但随之而来的副作用是这些数字形式的数据文件在流转过程中安全...
商业机密用u盘存储安全吗?
不安全商业机密用u盘存储是不安全的,商场如战场,如今的商业战场竞争越来越激烈,很多公司都会不遗余力的窃取同行的商业机密,而很多的管理者会将企业的重要商业机密存储在u盘中,今天给大家讲一下如何将商业机密更安全的存储起来。1、U盘内数据加密利用安企神可以对公司的机密文件进行加密,然后将加密后的机密文件移到u盘里,这样U盘内...