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

PHP网站建设选择哪家好动画设计师月薪多少

PHP网站建设选择哪家好,动画设计师月薪多少,做网站大约需要多少钱,wordpress当中加入论坛一、SM3算法介绍 SM3算法是中国国家密码管理局#xff08;OSCCA#xff09;于2010年发布的商用密码散列函数标准#xff0c;属于我国自主设计的密码算法体系之一 #xff0c;标准文档下载地址为#xff1a;SM3密码杂凑算法 。SM3算法输出长度为256位#xff08;32字节OSCCA于2010年发布的商用密码散列函数标准属于我国自主设计的密码算法体系之一 标准文档下载地址为SM3密码杂凑算法 。SM3算法输出长度为256位32字节与SHA-256类似但采用了更适合国内安全需求的优化结构。SM3基于Merkle-Damgård迭代结构通过填充、消息分组、扩展和压缩等步骤处理输入数据确保任意长度的消息都能生成固定长度的摘要。作为我国密码行业标准GM/T 0004-2012SM3在政务、金融、物联网等领域广泛应用是我国信息安全国产化的重要支撑。 SM3算法的核心流程包括消息填充、消息扩展和压缩函数三部分。首先输入数据会被填充至512位的整数倍并附加长度信息。随后消息分组通过扩展算法生成132个32位字供压缩函数使用。压缩函数采用64轮非线性迭代运算结合与、或、异或、模加法等操作并引入多个常量进行混淆确保雪崩效应微小输入变化导致输出巨大差异。SM3的设计在安全性和效率上取得平衡能够有效抵抗碰撞攻击、长度扩展攻击等威胁。 二、Python代码实现 SM3算法的Python实现如下所示大致可以分为三个部分 1. 初始化与基础运算函数 SM3 类初始化时设定默认的初始向量 IV8个32位常量和字符编码方式ASCII/UTF-8/GBK。核心辅助函数包括 cshift_left(x, l)实现32位整数的循环左移确保位移后仍为32位。 Tj(j)根据轮数返回常量前16轮为0x79cc4519后48轮为0x7a879d8a。 FFj 和 GGj布尔函数分别用于压缩函数中的非线性运算前16轮使用异或逻辑后48轮改用与/或逻辑增强扩散性。 P0 和 P1置换函数通过循环左移和异或操作打乱数据P0用于压缩末步P1用于消息扩展。 2. 消息填充与分组处理 padding(msg) 方法将输入消息按SM3标准填充为512位的整数倍 数据转换支持字符串、整数或字节流输入统一转为字节序列。 填充规则末尾添加0x80补零至长度满足 (消息长度 64) % 512 0最后64位写入原始消息长度的二进制表示。 分组输出返回16字32位/字的块列表每块包含填充后的数据用于后续压缩。 3. 压缩函数与摘要生成 CF(V, B)压缩函数的核心处理单个512位分组 消息扩展将16字的输入块B扩展为68字W0和64字W1通过P1置换增强非线性。 64轮迭代每轮更新8个工作变量A-H结合SS1/SS2位移、TT1/TT2混合运算及P0置换实现高强度混淆。 compression(msg)驱动流程调用padding分块后逐块应用CF压缩最终将8个状态变量拼接为256位哈希值以字节形式输出。 class SM3:def __init__(self, encodingascii): # encodine:ascii/utf-8/gbkself.IV [0x7380166f, 0x4914b2b9, 0x172442d7, 0xda8a0600, 0xa96f30bc, 0x163138aa, 0xe38dee4d, 0xb0fb0e4e]self.encoding encodingdef cshift_left(self, x, l):while l 32:l - 32x x 0xffffffffbin_x {:032b}.format(x)bin_x bin_x[l:] bin_x[:l]return int(bin_x, 2)def Tj(self, j):if (j 16):return 0x79cc4519else:return 0x7a879d8adef FFj(self, x, y, z, j):if j 16:return x ^ y ^ zelse:return (x y) | (x z) | (y z)def GGj(self, x, y, z, j):if j 16:return x ^ y ^ zelse:return (x y) | (~x z)def P0(self, x):return x ^ self.cshift_left(x, 9) ^ self.cshift_left(x, 17)def P1(self, x):return x ^ self.cshift_left(x, 15) ^ self.cshift_left(x, 23)def padding(self, msg):msg_len len(msg)msg_blen msg_len 3m, n msg_len 2, msg_len 3block []one_block []if type(msg) type():bt_msg msg.encode(encodingself.encoding, errorsstrict)elif type(msg) type(0):bt_msg msg.to_bytes((msg.bit_length() 7) // 8, big)else:bt_msg msgfor i in range(m):wd bt_msg[0] 24 | bt_msg[1] 16 | bt_msg[2] 8 | bt_msg[3]one_block.append(wd)bt_msg bt_msg[4:]if i 15 15:block.append(one_block.copy())one_block.clear()if n 0:new_wd 0x80 24elif n 1:new_wd bt_msg[0] 24 | 0x80 16elif n 2:new_wd bt_msg[0] 24 | bt_msg[1] 16 | 0x80 8else:new_wd bt_msg[0] 24 | bt_msg[1] 16 | bt_msg[2] 8 | 0x80one_block.append(new_wd)ob_len len(one_block)if ob_len 14:for i in range(14 - ob_len):one_block.append(0)one_block.append(msg_blen 32)one_block.append(msg_blen 0xffffffff)block.append(one_block.copy())else:for i in range(16 - ob_len):one_block.append(0)block.append(one_block.copy())one_block [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, msg_blen 32, msg_blen 0xffffffff]block.append(one_block.copy())return blockdef CF(self, V, B):W0, W1 B.copy(), []for i in range(16, 68):wd self.P1(W0[i - 16] ^ W0[i - 9] ^ self.cshift_left(W0[i - 3], 15)) ^ self.cshift_left(W0[i - 13], 7) ^ \W0[i - 6]W0.append(wd)for i in range(64):W1.append(W0[i] ^ W0[i 4])A, B, C, D, E, F, G, H Vfor i in range(64):SS1 (self.cshift_left(self.cshift_left(A, 12) E self.cshift_left(self.Tj(i), i), 7)) 0xffffffffSS2 SS1 ^ self.cshift_left(A, 12)TT1 (self.FFj(A, B, C, i) D SS2 W1[i]) 0xffffffffTT2 (self.GGj(E, F, G, i) H SS1 W0[i]) 0xffffffffD CC self.cshift_left(B, 9)B AA TT1H GG self.cshift_left(F, 19)F EE self.P0(TT2)return A, B, C, D, E, F, G, Hdef compression(self, msg):block self.padding(msg)V self.IVfor bi in block:res self.CF(V, bi)for i in range(8):V[i] V[i] ^ res[i]res bfor v in V:res res v.to_bytes(4, big)return res 三、正确性验证 我们编写了下面的代码进行正确性验证这是SM3标准文档中的两个测试向量 def test_case1():msg abcexpected_hash0x66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0test_hash_bytes SM3().compression(msg)test_hashint.from_bytes(test_hash_bytes, big)if test_hash expected_hash:print(测试用例1通过.)else:print(测试用例1失败)def test_case2():msg abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdexpected_hash0xdebe9ff92275b8a138604889c18e5a4d6fdb70e5387e5765293dcba39c0c5732test_hash_bytes SM3().compression(msg)test_hashint.from_bytes(test_hash_bytes, big)if test_hash expected_hash:print(测试用例2通过.)else:print(测试用例2失败)if __name__ __main__:test_case1()test_case2() 需要注意示例2中512比特消息为16进制数表示我们的测试用例2中的字符abcd对应的ASCII码正是0x61, 0x62, 0x63, 0x64。运行代码后输出如下图我们的代码正确运行。 为了方便读者直接运行我们的完整代码如下 class SM3:def __init__(self, encodingascii): # encodine:ascii/utf-8/gbkself.IV [0x7380166f, 0x4914b2b9, 0x172442d7, 0xda8a0600, 0xa96f30bc, 0x163138aa, 0xe38dee4d, 0xb0fb0e4e]self.encoding encodingdef cshift_left(self, x, l):while l 32:l - 32x x 0xffffffffbin_x {:032b}.format(x)bin_x bin_x[l:] bin_x[:l]return int(bin_x, 2)def Tj(self, j):if (j 16):return 0x79cc4519else:return 0x7a879d8adef FFj(self, x, y, z, j):if j 16:return x ^ y ^ zelse:return (x y) | (x z) | (y z)def GGj(self, x, y, z, j):if j 16:return x ^ y ^ zelse:return (x y) | (~x z)def P0(self, x):return x ^ self.cshift_left(x, 9) ^ self.cshift_left(x, 17)def P1(self, x):return x ^ self.cshift_left(x, 15) ^ self.cshift_left(x, 23)def padding(self, msg):msg_len len(msg)msg_blen msg_len 3m, n msg_len 2, msg_len 3block []one_block []if type(msg) type():bt_msg msg.encode(encodingself.encoding, errorsstrict)elif type(msg) type(0):bt_msg msg.to_bytes((msg.bit_length() 7) // 8, big)else:bt_msg msgfor i in range(m):wd bt_msg[0] 24 | bt_msg[1] 16 | bt_msg[2] 8 | bt_msg[3]one_block.append(wd)bt_msg bt_msg[4:]if i 15 15:block.append(one_block.copy())one_block.clear()if n 0:new_wd 0x80 24elif n 1:new_wd bt_msg[0] 24 | 0x80 16elif n 2:new_wd bt_msg[0] 24 | bt_msg[1] 16 | 0x80 8else:new_wd bt_msg[0] 24 | bt_msg[1] 16 | bt_msg[2] 8 | 0x80one_block.append(new_wd)ob_len len(one_block)if ob_len 14:for i in range(14 - ob_len):one_block.append(0)one_block.append(msg_blen 32)one_block.append(msg_blen 0xffffffff)block.append(one_block.copy())else:for i in range(16 - ob_len):one_block.append(0)block.append(one_block.copy())one_block [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, msg_blen 32, msg_blen 0xffffffff]block.append(one_block.copy())return blockdef CF(self, V, B):W0, W1 B.copy(), []for i in range(16, 68):wd self.P1(W0[i - 16] ^ W0[i - 9] ^ self.cshift_left(W0[i - 3], 15)) ^ self.cshift_left(W0[i - 13], 7) ^ \W0[i - 6]W0.append(wd)for i in range(64):W1.append(W0[i] ^ W0[i 4])A, B, C, D, E, F, G, H Vfor i in range(64):SS1 (self.cshift_left(self.cshift_left(A, 12) E self.cshift_left(self.Tj(i), i), 7)) 0xffffffffSS2 SS1 ^ self.cshift_left(A, 12)TT1 (self.FFj(A, B, C, i) D SS2 W1[i]) 0xffffffffTT2 (self.GGj(E, F, G, i) H SS1 W0[i]) 0xffffffffD CC self.cshift_left(B, 9)B AA TT1H GG self.cshift_left(F, 19)F EE self.P0(TT2)return A, B, C, D, E, F, G, Hdef compression(self, msg):block self.padding(msg)V self.IVfor bi in block:res self.CF(V, bi)for i in range(8):V[i] V[i] ^ res[i]res bfor v in V:res res v.to_bytes(4, big)return resdef test_case1():msg abcexpected_hash0x66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0test_hash_bytes SM3().compression(msg)test_hashint.from_bytes(test_hash_bytes, big)if test_hash expected_hash:print(测试用例1通过.)else:print(测试用例1失败)def test_case2():msg abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdexpected_hash0xdebe9ff92275b8a138604889c18e5a4d6fdb70e5387e5765293dcba39c0c5732test_hash_bytes SM3().compression(msg)test_hashint.from_bytes(test_hash_bytes, big)if test_hash expected_hash:print(测试用例2通过.)else:print(测试用例2失败)if __name__ __main__:test_case1()test_case2()
http://www.w-s-a.com/news/148869/

相关文章:

  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文
  • 网站建设与网页设计论述题软件开发公司在哪里
  • 二级网站建设方案模板亚马逊网站建设案例
  • 网站开发兼职团队门户网站如何制作
  • 高州市网站建设开发区招聘信息
  • 上海专业网站制作设计公司企业邮箱怎样注册
  • 网站建设在商标第几类网站建设 设计创意
  • 做一网站APP多少钱重庆中色十二冶金建设有限公司网站
  • 网上做效果图网站有哪些软件徐州泉山区建设局网站
  • 凯里网站制作网站篡改搜索引擎js
  • 如何使用凡科建设网站武安城乡建设网站
  • 网站建设网站及上传wordpress火车头发布
  • 有没有做网站的团队电脑版传奇网站
  • 建立企业网站公司医疗创意小产品设计
  • 深圳 做网站 车公庙免费的招标网有哪些
  • 网站在那里备案成都成华区网站建设
  • 做网站选哪家好搜索引擎优化的目标体系包括哪些
  • 做数据可视化的网站ppt2016是制作网页的软件
  • 济宁市建设工程质量监督站网站徐州网站优化推广
  • 北京网站设计多少钱php做商品网站
  • 能打开的网站你了解的彩票网站开发dadi163
  • 手机做网站价格优秀企业网站建设价格
  • 电商网站建设企业做网站的客户多吗
  • 有做思维图的网站吗西安建设市场诚信信息平台网站
  • 网站建设求职具备什么30岁学网站开发
  • 官方网站minecraft北京低价做网站
  • 网站建设报价兴田德润机械加工网络接单