一、物料分析
在选择搬运方法时,最有影响的因素通常是所需要搬运的物料。因此要弄清物料的类别、物料的主要特征以及物料的实际最小单元或运输单元。
二、各项移动分析
在分析各项移动时,需要掌握物料(物料分类)、路线(长度、起点和终点)与物流(物流量、物流条件)等资料。
分析各项移动的方法有两种:
1、流程分析法:这种方法每一次只观察一类产品或物料,并跟踪它沿整个生产过程收集资料。必要时,对从原料库到成品库的全过程进行跟踪,编制流程图表。
2、起迄点分析法:这种方法有两种不同做法,一是通过观察每次移动的起迤点收集资料,每次分析一条路线;另一种做法是对一个区域进行观察,收集运进运出这个区域的一切物料的有关资料,编制物料进出表。
三、各项移动的图表化
图表化是数据处理的一种方法,它把对各项移动的分析结果和区域布置两部分综合起来,用一些规定的特殊符号制成图表,能清楚地表示出所需要设计搬运系统的情况。因此各项移动的图表化是SHA程序模式中的一个重要步骤。。
MD5即Message-Digest Algorithm 5(信息摘要算法5),是计算机广泛使用的散列算法之一。经MD2、MD3和MD4发展而来,诞生于20世纪90年代初。用于确保信息传输完整一致。虽然已被破解,但仍然具有较好的安全性,加之可以免费使用,所以仍广泛运用于数字签名、文件完整性验证以及口令加密等领域。
算法原理:
散列算法得到的结果位数是有限的,比如MD5算法计算出的结果字长为128位,意味着只要我们穷举2^128次,就肯定能得到一组碰撞,下面让我们来看看一个真实的碰撞案例。我们之所以说MD5过时,是因为它在某些时候已经很难表现出散列算法的某些优势——比如在应对文件的微小修改时,散列算法得到的指纹结果应当有显著的不同,而下面的程序说明了MD5并不能实现这一点。
而诸如此类的碰撞案例还有很多,上面只是原始文件相对较小的一个例子。事实上现在我们用智能手机只要数秒就能找到MD5的一个碰撞案例,因此,MD5在数年前就已经不被推荐作为应用中的散列算法方案,取代它的是SHA家族算法,也就是安全散列算法(Secure Hash Algorithm,缩写为SHA)。
SHA实际包括有一系列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。而我们所说的SHA2实际是对后面4中的统称。各种SHA算法的数据比较如下表,其中的长度单位均为位:
MD5和SHA1,它们都有4个逻辑函数,而在SHA2的一系列算法中都采用了6个逻辑函数。
以SHA-1为例,算法包括有如下的处理过程:
和MD5处理输入方式相同
经过添加位数处理的明文,其长度正好为512位的整数倍,然后按512位的长度进行分组,可以得到一定数量的明文分组,我们用Y 0 ,Y 1 ,……Y N-1 表示这些明文分组。对于每一个明文分组,都要重复反复的处理,这些与MD5都是相同的。
而对于每个512位的明文分组,SHA1将其再分成16份更小的明文分组,称为子明文分组,每个子明文分组为32位,我们且使用M[t](t= 0, 1,……15)来表示这16个子明文分组。然后需要将这16个子明文分组扩充到80个子明文分组,我们将其记为W[t](t= 0, 1,……79),扩充的具体方法是:当0≤t≤15时,Wt = Mt;当16≤t≤79时,Wt = ( W t-3 ⊕ W t-8 ⊕ W t-14 ⊕ W t-16 ) <<<1,从而得到80个子明文分组。
所谓初始化缓存就是为链接变量赋初值。前面我们实现MD5算法时,说过由于摘要是128位,以32位为计算单位,所以需要4个链接变量。同样SHA-1采用160位的信息摘要,也以32位为计算长度,就需要5个链接变量。我们记为A、B、C、D、E。其初始赋值分别为:A = 0x67452301、B = 0xEFCDAB89、C = 0x98BADCFE、D = 0x10325476、E = 0xC3D2E1F0。
如果我们对比前面说过的MD5算法就会发现,前4个链接变量的初始值是一样的,因为它们本来就是同源的。
经过前面的准备,接下来就是计算信息摘要了。SHA1有4轮运算,每一轮包括20个步骤,一共80步,最终产生160位的信息摘要,这160位的摘要存放在5个32位的链接变量中。
在SHA1的4论运算中,虽然进行的就具体 *** 作函数不同,但逻辑过程却是一致的。首先,定义5个变量,假设为H0、H1、H2、H3、H4,对其分别进行如下 *** 作:
(A)、将A左移5为与 函数的结果求和,再与对应的子明文分组、E以及计算常数求和后的结果赋予H0。
(B)、将A的值赋予H1。
(C)、将B左移30位,并赋予H2。
(D)、将C的值赋予H3。
(E)、将D的值赋予H4。
(F)、最后将H0、H1、H2、H3、H4的值分别赋予A、B、C、D
这一过程表示如下:
而在4轮80步的计算中使用到的函数和固定常数如下表所示:
经过4轮80步计算后得到的结果,再与各链接变量的初始值求和,就得到了我们最终的信息摘要。而对于有多个明文分组的,则将前面所得到的结果作为初始值进行下一明文分组的计算,最终计算全部的明文分组就得到了最终的结果。
首先,sha1不是加密算法,大多数情况下它的输出相对输入是明显有数据损失的,它只是信息摘要算法第二,作为手工实现过(按rfc提供的范本改写)sha1的人来说,仍旧听不懂你说的什么m1,m2,m3(只是每次512bits处理时有4个阶段,第2和4阶段用的位运算一致而已),sha1计算摘要时确实以512bits分块,在产生digest时,大部分情况下也需填补最末一块并如楼主所述,以0补齐
因此,推荐楼主搜索rfc3174并查看,在文档末尾,有sha1的c实现,可以按照你的要求改成任何形式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)