使用自己研究的算法库中的一种完成下面任务
- 产生一个sm4加解密密钥k,产生两个sm2公私钥对 A(puba,pria),B(pubb,prib)
2 明文p为你们小组的成员的学号,从你的开始依次排列, 发送方A用sm4计算E k(p) = s, 用sm2 计算 E pub(k) = k1 用sm3计算 H(p)=h1, 提交代码及运行结果截图
3 发送方A把s,k1,h1 链接成一包数据发送给接收方B(可以拷贝给B,也可以用socket编程发送给B,用socket有加分)
4 接受方B, D prib(k1) = k, D k (s) = P, H(p) = h2, 并判断 h1,h2是否相等,提交代码和运行结果截图。
使用python-smx
总的加密
from pysmx.SM2 import generate_keypair
pk,sk = generate_keypair()
print(pk)
print(sk)
from pysmx.SM4 import Sm4, ENCRYPT, DECRYPT
key_data = b'1111222233334444' # 至少16字节
sm4 = Sm4()
input_data = [2,0,2,0,1,3,2,7,1,3,1,0,1,3,0,3]
sm4.sm4_set_key(key_data, ENCRYPT)
s = sm4.sm4_crypt_ecb(input_data)
print(input_data)
print(s)
from pysmx.SM2 import generate_keypair
pk, sk = generate_keypair()
from pysmx.SM2 import Encrypt
e = b'2020132713101303'
len_para = 64
k1 = Encrypt(e, pk , len_para, 0)
print(e)
print(k1)
from pysmx.SM3 import hash_msg
s = '2020132713101303'
h1=hash_msg(s)
print(s)
print(h1)
数据data
总的解密
from pysmx.SM4 import Sm4, ENCRYPT, DECRYPT
key_data = b'1111222233334444' # 至少16字节
sm4 = Sm4()
s=[178, 200, 37, 80, 155, 54, 193, 75, 112, 53, 153, 74, 154, 203, 103, 51]
sm4.sm4_set_key(key_data, DECRYPT)
m=sm4.sm4_crypt_ecb(s)
print(m)
pk=b'[\xf8\xcc\x99H\xc4\xe55\xef\x9c\x17\xc1x\x88\xc0\xe1rm\xa8\x8c\xed\x80T\x95/@\xac\r\xdf\xdf\\\xd3\xfa\xaa\xd0a\t:,7N\x1d\xc2\xa7ZG\x82\xa3\xd4)\xf06\xda\x0c\xa1;\xc0\x0b\t%\x87\x80\xe1\x11'
sk=b'\x16\\\x8d\x90\xfcX\xcb\xfb\xf3\x06*\xe9\x15\xf5\xab{\xf8&\xd8ol\\\xd9Ama\x90q\xf1q\xf5\xb7'
from pysmx.SM2 import Encrypt
e = b'2020132713101303'
len_para = 64
k1 = Encrypt(e, pk , len_para, 0)
from pysmx.SM2 import Decrypt
k = Decrypt(k1, sk, len_para)
print(k)
from pysmx.SM3 import hash_msg
s = '2020132713101303'
h2=hash_msg(s)
print(h2)
可见成果解密,且sm3的hash值是一样的
标签:课程设计,sm4,pysmx,验收,k1,print,import,data From: https://www.cnblogs.com/yycyhyhf/p/17005341.html