duanhongyi / gmssl

a python crypto for sm2/sm3/sm4
MIT License
474 stars 139 forks source link

在初始向量非零(iv≠全零)情况下,SM4-CBC加密结果错误。 #76

Closed ZidongY closed 10 months ago

ZidongY commented 10 months ago

输入参数如下: key= '774DF197285283C3FB1A11D00FE1DC4B' data= 'D00FE1DC4B8000000000000000000000' iv= '3E892BC99C0479EC854E46EB5368DE26' padding_mode= 0-NoPadding

加密处理: cipher = CryptSM4(padding_mode=0) cipher.set_key(key, SM4_ENCRYPT) result = cipher.crypt_cbc(iv,data)

计算结果: result = B6CBC3279DFB97447AA23A1D6C6B1915

找了两个第三方在线工具计算结果都是:885073163B715169BB1AA77B311EB96A 在线工具1 在线工具2

image

能看出是哪里不对吗

PrimumMobile commented 10 months ago

import sm4 import binascii key= '774DF197285283C3FB1A11D00FE1DC4B' data= 'D00FE1DC4B8000000000000000000000' iv= '3E892BC99C0479EC854E46EB5368DE26' cipher = sm4.CryptSM4(padding_mode=0) cipher.set_key(binascii.unhexlify(key),sm4.SM4_ENCRYPT) result = cipher.crypt_cbc(binascii.unhexlify(iv),binascii.unhexlify(data)) print(binascii.hexlify(result).upper())

测试着没问题,确认以下代码吧

ZidongY commented 10 months ago

是我程序代码的问题,iv传入是没有正确转码成byte类型,疏忽了。