加密与解密技术核心思想 认知 密码锁,古墓 天王盖地虎,。。。。。 美国的摩尔斯在1844年发明的,故也被叫做摩尔斯电码。 银行,手机,游戏 安全哈希算法(Secure Hash Algorithm) SHA-1 将消息摘要转换成位字符串 我们以“abc”字符串来说明问题,因为'a'=97, 'b'=98, 'c'=99,所以将其转换为位串后为: 01100001 01100010 01100011 对转换后的位字符串进行补位操作 Sha-1算法标准规定,必须对消息摘要进行补位操作,即将输入的数据进行填充,使得数据长度对512求余的结果为448 ,填充比特位的最高位补一个1,其余的位补0,如果在补位之前已经满足对512取模余数为448,也要进行补位,在其后补一位1即可。 总之,补位是至少补一位,最多补512位,我们依然以“abc”为例,其补位过程如下: 初始的信息摘要:01100001 01100010 01100011 第一步补位: 01100001 01100010 01100011 1 ..... ...... 补位最后一位: 01100001 01100010 01100011 10.......0(后面补了423个0) 而后我们将补位操作后的信息摘要转换为十六进制,如下所示: 61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 附加长度值 在信息摘要后面附加64bit的信息,用来表示原始信息摘要的长度,在这步操作之后,信息报文便是512bit的倍数。通常来说用一个64位的数据表示原始消息的长度,如果消息长度不大于2^64,那么前32bit就为0,在进行附加长度值操作后,其“abc”数据报文即变成如下形式: 61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000018 因为“abc”占3个字节,即24位 ,换算为十六进制即为0x18。 初始化缓存 一个160位MD缓冲区用以保存中间和最终散列函数的结果。它可以表示为5个32位的寄存器(H0,H1,H2,H3,H4)。初始化为: H0 = 0x67452301 H1 = 0xEFCDAB89 H2 = 0x98BADCFE H3 = 0x10325476 H4 = 0xC3D2E1F0 大端存储模式:高位数据放在低地址,低位数据放在高地址 计算消息摘要 S函数 循环左移操作符Sn(x),x是一个字,也就是32bit大小的变量,n是一个整数且0>32-n) 常量字k(0)、k(1)、...k(79) Kt = 0x5A827999 (0
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4459/viewspace-2812855/ ,如需转载,请注明出处,否则将追究法律责任。