课程设计验收2

使用自己研究的算法库中的一种完成下面任务

  1. 产生一个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值是一样的

posted @ 2022-12-26 11:28  20201327刘谨铭  阅读(44)  评论(0编辑  收藏  举报