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

在SoC数据加解密验证中使用 Python 的 gmssl 库

在SoC数据加解密验证中使用 Python 的 gmssl 库

       摘要:本文提供了一个在UVM验证环境中使用 Python 的 gmssl 库重的完整示例,这种方式展示了良好的模块化设计,更换底层实现而无需修改调用方代码。


准备工作:安装 gmssl 库

首先,请确保您的 Python 环境中已经安装了 gmssl 库。如果尚未安装,请运行以下命令:

pip install gmssl

1. Python 脚本:sm4_crypto.py (使用 gmssl)

这是重写后的核心 Python 脚本。它使用 gmssl 库来执行 SM4 加密和解密,并通过标准输入/输出与 UVM 环境进行 JSON 格式的数据通信。

# sm4_crypto.py
import sys
import json
from gmssl import sm4def main():"""通过标准输入接收JSON数据,执行SM4加密或解密,并将结果以JSON格式输出到标准输出。"""try:# 从标准输入读取 JSON 格式的数据input_data = sys.stdin.read()data = json.loads(input_data)# 将十六进制字符串密钥和初始化向量转换为字节key = bytes.fromhex(data["key"])         # 128-bit (16 bytes) 密钥iv = bytes.fromhex(data["iv"])           # 128-bit (16 bytes) 初始化向量# 初始化 SM4 加密器crypt_sm4 = sm4.CryptSM4()output_json = {}# 判断是执行加密还是解密if "plaintext" in data:# --- 加密流程 ---plaintext = bytes.fromhex(data["plaintext"])# 设置加密密钥crypt_sm4.set_key(key, sm4.SM4_ENCRYPT)# 使用CBC模式进行加密,gmssl会自动处理填充ciphertext = crypt_sm4.crypt_cbc(iv, plaintext)# 准备输出的JSONoutput_json = {"ciphertext": ciphertext.hex()}elif "ciphertext" in data:# --- 解密流程 ---ciphertext = bytes.fromhex(data["ciphertext"])# 设置解密密钥crypt_sm4.set_key(key, sm4.SM4_DECRYPT)# 使用CBC模式进行解密,gmssl会自动处理填充decrypted_p
http://www.dtcms.com/a/267105.html

相关文章:

  • 03_性能优化:让软件呼吸更顺畅
  • 计算机网络(网页显示过程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)
  • 【网络协议安全】任务12:二层物理和单臂路由及三层vlanif配置方法
  • HarmonyOS:创建ArkTS卡片
  • 从零开始开发纯血鸿蒙应用之探析仓颉语言与ArkTS的差异
  • Vuex身份认证
  • 《C++初阶之类和对象》【经典案例:日期类】
  • Java创建型模式---单例模式
  • WSL命令
  • C#每日学习日记
  • 3dmax烘焙插件3dmax法线贴图烘焙教程glb和gltf元宇宙灯光效果图烘焙烘焙光影贴图支持VR渲染器
  • AWS WebRTC:通过shell分析viewer端日志文件
  • 深入解析享元模式:通过共享技术高效支持大量细粒度对象
  • 【力扣 简单 C】70. 爬楼梯
  • 【鸿蒙】鸿蒙操作系统发展综述
  • 递归与循环
  • 深入理解Reactor调试模式:Hooks.onOperatorDebug() vs ReactorDebugAgent.init()
  • 软件工程经济与伦理
  • 流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法
  • HTML知识复习2
  • HuggingFists: 无代码处理复杂PDF
  • 一个简单的网页设计
  • Vue Router 中,params参数的名称必须与路由配置中的动态路径参数名完全一致
  • Go语言基础之接口
  • CppCon 2018 学习:Sane and Safe C++ Class Types
  • FLAN-T5:规模化指令微调的语言模型
  • NumPy 函数库在数学建模中的基本使用方法
  • 电脑休眠控制工具,灵活设置防休眠
  • 通过 Windows 共享文件夹 + 手机访问(SMB协议)如何实现
  • Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘