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

站长工具官网域名查询wordpress菜单底部导航

站长工具官网域名查询,wordpress菜单底部导航,成都企业网站建设哪家专业,dw网页制作图片Python gmssl.SM4使用案例 摘要:在异构计算系统验证中,通常会有数据加解密的要求,例如用户数据、权重参数等,本文将详细介绍在UVM验证环境中,调用Python的gmssl库,用SM4实现加解密的验证方案。 一、Python gmssl 库介绍 gmssl 是一个开源的、纯Python实现的国密算…Python gmssl.SM4使用案例 摘要:在异构计算系统验证中,通常会有数据加解密的要求,例如用户数据、权重参数等,本文将详细介绍在UVM验证环境中,调用Python的gmssl库,用SM4实现加解密的验证方案。 一、Python gmssl 库介绍 gmssl 是一个开源的、纯Python实现的国密算法库。它的最大特点是不依赖任何底层C库(如OpenSSL),这使得它在各种环境中部署和使用都非常方便,尤其适合作为算法行为级参考模型(Golden Model/Oracle)。 1.1 主要功能和支持的算法: SM2 (非对称加密和签名): 基于椭圆曲线的公钥密码算法,用于加密通信、数字签名和密钥交换。SM3 (哈希算法): 密码杂凑算法,输出256位的哈希值,功能类似于SHA-256。SM4 (对称加密): 分组密码算法,分组长度和密钥长度都是128位,用于数据加密,功能类似于AES-128。ZUC (祖冲之序列密码): 用于移动通信4G/5G网络的对称加密和完整性保护。1.2 为什么在验证中选择 gmssl? 纯Python实现:易于安装和部署,pip install gmssl 即可,避免了复杂的编译和环境依赖问题。代码可读性高:可以直接阅读其Python源码来理解算法标准,非常适合作为学习和开发的参考。易于集成:可以非常方便地与UVM验证环境通过DPI-C进行桥接,构建强大的参考模型。二、gmssl 库用法示例 首先,安装gmssl库: pip install gmssl1. SM4 对称加密示例 (最常用于RTL验证) SM4是分组密码,处理数据时需要指定模式(Mode)和填充(Padding)。这里以常用的CBC (Cipher Block Chaining)模式为例。 # sm4_example.py from gmssl.sm4 import Sm4, SM4_ENCRYPT, SM4_DECRYPT# 密钥和初始化向量(IV)都必须是128位 (16字节) key = b'\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10' iv = b'\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10'# 待加密的明文,这里是128位 (16字节) # 在RTL验证中,我们通常处理一个或多个完整的数据块,可以不使用padding plaintext = b'\x01\x23\x45\x67\x89\xab\xcd\xef\xfe\xdc\xba\x98\x76\x54\x32\x10'# 1. 初始化SM4加密器 crypt_sm4 = Sm4() crypt_sm4.set_key(key, SM4_ENCRYPT) # 设置为加密模式# 2. 加密 # 使用CBC模式进行加密,输入为bytes,输出也为bytes ciphertext = crypt_sm4.crypt_cbc(iv, plaintext)print("--- SM4 CBC Mode ---") print(f"Key : {key.hex()}") print(f"IV : {iv.hex()}") print(f"Plaintext : {plaintext.hex()}") print(f"Ciphertext : {ciphertext.hex()}")# 3. 解密过程 crypt_sm4.set_key(key, SM4_DECRYPT) # 切换为解密模式 decrypted_text = crypt_sm4.crypt_cbc(iv, ciphertext)print(f"Decrypted : {decrypted_text.hex()}")# 4. 验证结果 assert decrypted_text == plaintext print("\nEncryption and Decryption successful!")2. SM3 哈希算法示例 # sm3_example.py from gmssl.sm3 import sm3_hash# 待计算哈希的数据 (bytes) data_to_hash = b'hello world'# 计算哈希值,输入为bytes,输出也为bytes (32字节, 256位) hash_value = sm3_hash(list(data_to_hash)) # gmssl的sm3_hash接收一个byte列表print("--- SM3 Hash ---") print(f"Data : {data_to_hash.decode()}") print(f"Hash Value : {hash_value.hex()}") # 以十六进制字符串输出3. SM2 非对称加密示例 # sm2_example.py from gmssl.sm2 import sm2_crypt# 1. 生成SM2密钥对 (公钥和私钥) sm2_key = sm2_crypt.gen_key() private_key = sm2_key.private_key.hex() public_key = sm2_key.public_key.hex()print("--- SM2 Asymmetric Encryption ---") print(f"Private Key: {private_key}") print(f"Public Key : {public_key}")# 2. 使用公钥加密 data_to_encrypt = b'this is a secret message' encryptor = sm2_crypt.Sm2Crypt(public_key=public_key) ciphertext = encryptor.encrypt(data_to_encrypt)print(f"\nPlaintext : {data_to_encrypt.decode()}") print(f"Ciphertext : {ciphertext.hex()}")# 3. 使用私钥解密 decryptor = sm2_crypt.Sm2Crypt(private_key=private_key) decrypted_text = decryptor.decrypt(ciphertext)print(f"Decrypted : {decrypted_text.decode()}")assert decrypted_text == data_to_encrypt print("\nSM2 Encryption and Decryption successful!")三、gmssl 数据与 SystemVerilog 验证环境交互 在UVM等SystemVerilog验证环境中,与Python脚本交互的最佳实践是通过DPI-C接口。这形成了一个稳定且高效的三层架构:UVM - C - Python。下面以SM4加密为例,展示一个完整的交互流程。 步骤 1: 创建Python脚本作为Oracle (gmssl_oracle.py) 这个脚本通过命令行接收指令和数据,并从标准输出返回结果。这是解耦的关键。 # gmssl_oracle.py import sys from gmssl.sm4 import Sm4, SM4_ENCRYPT, SM4_DECRYPTdef main():# 命令行参数: gmssl_oracle.py encrypt|decrypt key_hex iv_hex data_hexif len(sys.argv) != 5:print("Error: Invalid arguments.", file=sys.stderr)sys.exit(1)mode, key_hex, iv_hex, data_hex = sys.argv[1:]try:key = bytes.fromhex(key_hex)iv = bytes.fromhex(iv_hex)data = bytes.fromhex(data_hex)except ValueError as e:print(f"Error: Invalid hex string. {e}
http://www.zqtcl.cn/news/57578/

相关文章:

  • 营销型网站收费wordpress 建站教程 下载
  • 做网站是什么软件国外wordpress论坛
  • 专业生产佛山网站建设wordpress添加特效
  • 网站网站合作建设网址导航怎么卸载不掉
  • nofollow标签对网站收录的影响电子商务平台网站开发
  • 全球著名科技网站学校网站建设申请报告
  • 专业性行业网站有哪些个人计算机做服务器建网站
  • 服务器外面打不开网站怎样做网站信箱
  • 辽阳做网站公司工业产品设计公司排名
  • 建设网站cms怎样制作自己的网站
  • 做美食视频网站有哪些移动端app开发需要哪些技术
  • 常州网站设计公司如何管理手机网站首页
  • 北京高端 网站建设wordpress外网
  • 能搜任何网站的浏览器重庆介绍ppt制作
  • 东莞门户网站建设网站备案 取消接入
  • 网站建设与应用教案品牌运营策略
  • 帝国cms 做的完整的网站有没有国产在线做a视频网站
  • 上海做壁画的网站2345网址导航手机版下载安装
  • 模板网站 怎么做优化凡科网站免费版怎么做
  • 甘肃做网站哪家好怎样接做网站和软件的活
  • 嘉兴房产网站建设天长市城乡规划建设局网站
  • 网站后期的维护和更新湖南房地产加盟网站建设
  • 网站开发者工具的网络选项wordpress 缩略图类型
  • 网站制作容易吗学做网站如何创业
  • 手机网站开发公司南充网站建设服务商
  • 合肥市建设局网站注册深圳公司需要多少钱
  • 推文最好的网站是哪个世界500强企业招聘网站
  • 济阳建设局网站怎样看一个网站的浏览量
  • 网站建设市场价三个字最吉利最旺财的公司名
  • 免费建站优化8个实用的wordpress数据库技巧