首页 > 编程语言 >tongsuo-python-sdk

tongsuo-python-sdk

时间:2023-09-15 23:56:02浏览次数:61  
标签:ciphertext actual unhexlify python binascii update plaintext tongsuo sdk

SM4 OFB例子


import binascii

from tongsuopy.crypto.ciphers import Cipher, algorithms, modes

# key = "0123456789ABCDEFFEDCBA9876543210"
# iv = "0123456789ABCDEFFEDCBA9876543210"

key = iv = "a7015b8fac3fb90d05930dc0e723ebcb"


# plaintext = b"0123456789ABCDEFFEDCBA98765432100123456789ABCDEFFEDCBA9876543210"
plaintext = "0123456789ABCDEFFEDCBA98765432100123456789ABCDEFFEDC"
plaintext = plaintext.encode()
ciphertext = (
    b"2677F46B09C122CC975533105BD4A22AF6125F7275CE552C3A2BBCF533DE8A3B"
)

c = Cipher(
    # algorithms.SM4(binascii.unhexlify(key)), modes.CBC(binascii.unhexlify(iv))
    algorithms.SM4(binascii.unhexlify(key)), modes.OFB(binascii.unhexlify(iv))
)

enc = c.encryptor()
# actual_ciphertext = enc.update(binascii.unhexlify(plaintext))
actual_ciphertext = enc.update(plaintext)
actual_ciphertext += enc.finalize()
print(actual_ciphertext)

# assert binascii.hexlify(actual_ciphertext).upper() == ciphertext

dec = c.decryptor()
# actual_plaintext = dec.update(binascii.unhexlify(ciphertext))
# actual_plaintext = dec.update(binascii.unhexlify(binascii.hexlify(actual_ciphertext)))
actual_plaintext = dec.update(actual_ciphertext)
actual_plaintext += dec.finalize()

# assert binascii.hexlify(actual_plaintext).upper() == plaintext

# print("actual_plaintext =", binascii.hexlify(actual_plaintext))
print("actual_plaintext =", actual_plaintext)
print(plaintext)

标签:ciphertext,actual,unhexlify,python,binascii,update,plaintext,tongsuo,sdk
From: https://www.cnblogs.com/jsxzhub/p/17706183.html

相关文章

  • Python机器学习——鸟类图像分类
    (一)选题背景:1.生物多样性保护:鸟类是地球上最为丰富和多样的脊椎动物类群之一,对于生态系统的稳定和生物多样性的维持起着重要作用。通过开展鸟类图像分类研究,可以帮助精确地辨别鸟类物种,有助于监测鸟类的分布、数量和迁徙情况,从而更好地实施生物多样性保护和生态环境管理。......
  • python开发商品扫描录入模型
       最近市场监管部门加大了对销售过期商品的处罚力度。很多菜店、粮店等店不大但商品品种、货号批次却非常多。这里介绍两个可以用手机扫描录入商品数据的模型,供大家二次开发,设计出一个管理商品失效日期的小程序。   模型一importsqlite3frompyzbar.pyzbarimport......
  • python实现座位打印
    功能需求用户输入行和列,程序自动打印出相应的座位布局功能分析1:定义一个函数,用于实现功能代码段2:使用input()语句获取用户输入的行列数据3:使用range()模块根据用户输入的行列创建一个二维列表4:使用for嵌套循环填充座位的行列,可以使用不同的字符来区分座位5:打印座位布局程序实现#行r......
  • Python 安装与快速入门
    Python安装许多PC和Mac已经预装了Python。要检查在WindowsPC上是否安装了Python,请在开始菜单中搜索Python,或在命令行(cmd.exe)上运行以下命令:C:\Users\YourName>python--version要检查在Linux或Mac上是否安装了Python,请在Linux上打开命令行或在Mac上打开终端,并键入:python......
  • python02
    编码(密码本)计算机所有的数据本质上都是以0和1的组合来储存的。在计算机内会将中文内存转换成0101010101.......最终储存到硬盘上。在计算机有这么一个编码的概念(密码本)武01010111100001110101101010在计算机中有很多种编码每种编码都有自己的一套密码本,都维护自己的一......
  • Python基础 - 索引器,切片语法
    索引器语法:obj[key]a)一般key为int和str比较常见,但是Python下的索引器的key也可以是float,tuple,list,dict等任意对象。b)索引器会由解释器帮我们转换成对__getitem__函数的调用。 classMyTest():def__getitem__(self,key):print(type(key))......
  • Python基础 - 三目运算
    Python中没有下面这样的三目运算符:desc=a==0?"zero":"not_zero" 但是可以用其他的方式来实现:1,ifelse表达式语法:为真时的值if 条件else 为假时的值a=10b="zero"ifa==0else"not_zero"print(type(b),b)#<class'str'>not......
  • Python集成开发环境IDE-Pycharm 2023 win+mac版
    PyCharm2023是一种流行的集成开发环境(IDE),专门为Python开发人员设计.→→↓↓载Pycharm2023mac/winPyCharm2023版提供了强大的代码编辑器,支持智能代码完成、代码分析、代码重构等功能。它还可以自动检测错误并提供修复建议。PyCharm的调试器非常强大,可以帮助开发人员诊断和......
  • Python模块的介绍
    Python模块的介绍什么是模块为什么要用模块模块的分类和形式模块的导入方式导入语句的其他方式判断文件类型什么是模块Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关......
  • python文件操作
    python:文件处理一、文件的基本概念1、什么是文件内存中存放的数据在计算机关机后就会消失(临时存储)。要长久保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理与检索。引入了“文件”的概念。一篇文章,一段视频,一个可执行程序,都可以被保存为一个文件,并赋予一个文件名......