当前位置: 首页 > news >正文

合肥市网站建设_网站建设公司_Linux_seo优化

深圳制作网站制作,网站美术视觉效果布局设计,洛阳建设网站公司,wordpress 页面找不到目录1 SHA2562 实现原理2.1 消息预处理2.2 使用的常量和循环移位函数2.3 主循环3 结果4 对中文编码1 SHA256 SHA256是SHA-2下的一个子算法#xff0c;与之类似的还有SHA224、SHA384、SHA512#xff0c;算法原理基本一致。 哈希算法通过对消息进行计算#xff0c;生成一定长… 目录1 SHA2562 实现原理2.1 消息预处理2.2 使用的常量和循环移位函数2.3 主循环3 结果4 对中文编码1 SHA256 SHA256是SHA-2下的一个子算法与之类似的还有SHA224、SHA384、SHA512算法原理基本一致。 哈希算法通过对消息进行计算生成一定长度的数据称作消息摘要。SHA256能生成64*8512 bits的消息摘要每一个数据都可以当做一条消息的索引这样能代表的数据就有2^51213407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096种可能这个消息量已经足够大了。 另外我们知道能用一个摘要索引代表一条消息的前提是没有其他消息的摘要与另一条不同消息的摘要相同如果相同称作碰撞。算法过于简单则会很容易发生碰撞也就容易被破解。 2 实现原理 一些原理和伪代码可以参考这篇文章 2.1 消息预处理 消息预处理成长度是512bits的倍数。首先需要对消息进行至少一次的填充先在消息后附加8比特的b10000000然后填充0至长度模512余448。再填充64bits的长度这样总长度就是512的倍数了。 计算长度时直接让长度值左移3位快速计算乘上8也就是消息的比特长度。使用chr把int型数据转成比特对于的字符注意和str的区别。 def msgProcess(m):# 附加长度str_l chr(len(m)3)# 填充到模512为448# 至少进行一次填充m \x80m \x00 * ((55 - len(m)) % 64)str_l \x00 * (9 - len(str_l)) str_lm str_lreturn m2.2 使用的常量和循环移位函数 循环右移时为了保证数据在32bits内需要取与。 #预定义常量 _H0 [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19] _HashConstant [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]def shiftRight(a, x, bitnum32):return ((a x)|(a (bitnum - x))) (2 ** bitnum - 1)2.3 主循环 流程是将预处理好的消息分成512bits的数据块处理更新ABCDEFGH的值在对数据进行操作后每次加法都应与11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111取与使得消息大小受限制。 def mySHA256(message):H _H0.copy() # 使用列表的复制不要修改常量的值message msgProcess(message)for i in range(0, len(message), 64):msg message[i:i64]W []for j in range(0,64,4):cut msg[j:j4]W.append(ord(cut[0])*(256**3)ord(cut[1])*(256**2)ord(cut[2])*256ord(cut[3]))W W ([0]*48)for j in range(16,64):s0 shiftRight(W[j-15],7) ^ shiftRight(W[j-15],18) ^ (W[j-15]3)s1 shiftRight(W[j-2],17) ^ shiftRight(W[j-2],19) ^ (W[j-2]10)W[j] (W[j-16] s0 W[j-7] s1) (2**32-1)a,b,c,d,e,f,g,h Hfor i in range(64):s0 (shiftRight(a, 2) ^ shiftRight(a, 13) ^ shiftRight(a, 22)) ((2**32)-1)maj ((a b) ^ (a c) ^ (b c)) ((2**32)-1)t2 (s0 maj) ((2**32)-1)s1 (shiftRight(e,6) ^ shiftRight(e,11) ^ shiftRight(e,25)) ((2**32)-1)ch ((e f) ^ (~e g)) ((2**32)-1)t1 (h s1 ch _HashConstant[i] W[i]) ((2**32)-1)a,b,c,d,e,f,g,h (t1t2) ((2**32)-1), a,b,c,(dt1) ((2**32)-1),e,f,gtemp [a,b,c,d,e,f,g,h]for i in range(8):H[i] temp[i]H[i] H[i] ((2**32)-1)#转字符串可能未满8位十六进制补0en [str(hex(it))[2:] for it in H]for i in range(8):it en[i]if len(it)8:en[i] 0*(8-len(it))itreturn .join(en)3 结果 if __name__ __main__:msg [121a s;f3,121a s;f3*10]for it in msg:print(消息: , it)print(散列值: , mySHA256(it))然后发现中文的计算和一些标准还是有些不同的。 4 对中文编码 使用gbk对含有中文的消息编码编码后是bytes型数据编写bytes和str互转的函数 def byte2str(b):s for i in b:i hex(i)[2:]s str(i)return sdef str2byte(s):b bb bytearray()ind 0while ind len(s):b.append(int(s[ind:ind2],16))ind 2return bytes(b)此外还有一个重点是其实python库里有sha256算法…它是hashlib库下的sha256函数将两个对比一下结果 import hashlib if __name__ __main__:msg [message,message*16,message*17]for it in msg:it it.encode(gbk)it byte2str(it)print(消息: , it)print(散列值: , mySHA256(it))print(库函数结果:,hashlib.sha256(it.encode(utf-8)).hexdigest(),\n)结果一致
http://www.ihoyoo.com/news/107833.html

相关文章:

  • 公司网站域名注册网站不能正常显示出现后台代码
  • 石家庄专业网站营销wordpress 自定义文章排序
  • 淘宝网站建设模板免费下载wordpress固定链接500
  • 专业的网站开发团队wordpress 置顶插件
  • 专做奢侈品品牌的网站dedecms网站地图前台路径不修改
  • 直播做网站网页游戏设计与制作专业
  • 乡村建设相关网站工程做网站
  • 那么多网站都是谁做的网站建设立项说明书
  • 网站建设教程流程做分类信息网站模板
  • 各大网站的域名是什么原因龙岩天宫山海拔
  • 网页设计与制作网站教程室内空间设计
  • 国际网站排名查询长兴做网站
  • 普通人找工作哪个网站好网站是否降权查询
  • 网站安全事件应急处置机制建设域名备案接入商查询
  • 网页设计网站费用wordpress静态文件目录下
  • 三线建设学兵连网站西安地区联系人网站建设的科目
  • 网站有中文源码加英文怎么做wordpress 动态js
  • 西安交易网站建设网页界面设计系统
  • 沈阳网站建设策划做调查问卷用的网站或软件
  • 做哪些网站流量大重庆市网站备案
  • 毕业设计静态网站建设选题依据网站开发工程师考试
  • 公司网站优化软件做网站怎样调用支付宝接口
  • 做网站是不是也是暴利深圳网站制作公司兴田德润电话多少
  • 网页设计相关网站代做单片机毕业设计网站
  • 合肥建设干部学校网站有哪些网站是免费学做网页的
  • 网站可以做视频链接怎么创作自己的网站
  • 网站开发的职业规划免费的行情网站app网页推荐
  • 温州网站优化关键词湛江模板建站软件
  • 网站免费注册域名网页是怎么制作的
  • 部队网站设计网站建设运营案例