王朝百科
分享
 
 
 

不可逆加密算法

王朝百科·作者佚名  2009-10-24  
宽屏版  字体: |||超大  

不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的“密码”也就是输入的明文。不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。

MD5算法: MD5的全称是Message-Digest Algorithm 5,它是基于Hash变换而来的,MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。 md5是怎样进行加密的 : 这个要分步来讲 为了更好的明白 我们来举个例子来讲 如对一个字符串 "string" 进行加密 第一步 我们要把他转换成位 (MD5是对位进行操作) 假如你连什么叫位也不懂 那下面就不用看了 老大 讲是简明易懂 不还是天书嘛 现在ME们假设 string 转换为 位后 是 1010000101110101 当然肯定不是 ME在这里只是把他当作是 因为ME可没功夫再把这个字符串一个个的转成位 。 所以后面你就权当他是 这个字符串 转换 成位的样子就行了 往后呢 就要对这个字节串 (就是前面那个都是1和0的一老串 东西了)进行补位 至于怎么补 很简单 只要使你的这个串的长度(有多少个1或者0就是有多长)补成比512的倍数(n倍)位少64位就成 当然这里的位不超过512 只要补到512少64位就成 补的规则嘛 很简单 就是在你的位后先补一个1 其它的补0 就成了 那么补位后 这个串变成 10100000101110101 1(先补的那个1)0000...000 (总共512-64位) (一只:补了这么多 该补完了吧 一头:还差一点 一只:再吐血!!!!!!) 这些完成后还要在其后面补上一个64位的数据 当然这个数据也是有规定的(一只:屁话 要不分开来讲干嘛) 这个数据就是 原字节串的长度(当然这个长度已被转换成了64位 至此数据补 完 这样大家一看就能明白 其实补完后这串正好是512的倍数 512 * N-64+64 至此前两步 补位和补数据长度完成了 D5算法说明一、补位二、补数据长度三、初始化MD5参数四、处理位操作函数五、主要变换过程六、输出结果补位:MD5算法先对输入的数据进行补位,使得数据位长度LEN对512求余的结果是448。即数据扩展至K*512+448位。即K*64+56个字节,K为整数。具体补位操作:补一个1,然后补0至满足上述要求。补数据长度:用一个64位的数字表示数据的原始长度B,把B用两个32位数表示。这时,数据就被填补成长度为512位的倍数。初始化MD5参数:四个32位整数 (A,B,C,D) 用来计算信息摘要,初始化使用的是十六进制表示的数字A=0X01234567B=0X89abcdefC=0Xfedcba98D=0X76543210处理位操作函数:X,Y,Z为32位整数。F(X,Y,Z) = X&Y|NOT(X)&ZG(X,Y,Z) = X&Z|Y?(Z)H(X,Y,Z) = X xor Y xor ZI(X,Y,Z) = Y xor (X|not(Z))主要变换过程:使用常数组T[1 ... 64], T[i]为32位整数用16进制表示,数据用16个32位的整数数组M[]表示。具体过程如下:/* 处理数据原文 */For i = 0 to N/16-1 do/*每一次,把数据原文存放在16个元素的数组X中. */For j = 0 to 15 doSet X[j] to M[i*16+j].end /结束对J的循环/* Save A as AA, B as BB, C as CC, and D as DD.*/AA = ABB = BCC = CDD = D/* 第1轮*//* 以 [abcd k s i]表示如下操作a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 322 4][ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 722 8][ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA11 22 12][ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15][BCDA 15 22 16]/* 第2轮* *//* 以 [abcd k s i]表示如下操作a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA0 20 20][ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23][BCDA 4 20 24][ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA8 20 28][ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA12 20 32]/* 第3轮*//* 以 [abcd k s i]表示如下操作a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35][BCDA 14 23 36][ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA10 23 40][ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43][BCDA 6 23 44][ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47][BCDA 2 23 48]/* 第4轮*//* 以 [abcd k s i]表示如下操作a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). *//* Do the following 16 operations. */[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51][BCDA 5 21 52][ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55][BCDA 1 21 56][ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59][BCDA 13 21 60][ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63][BCDA 9 21 64]/* 然后进行如下操作 */A = A + AAB = B + BBC = C + CCD = D + DDend /* 结束对I的循环*/

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有