《密码技术应用与实践》_04-公钥加密算法实践 - 数字签名.pptxVIP

  • 0
  • 0
  • 约1.54千字
  • 约 12页
  • 2026-01-15 发布于广东
  • 举报

《密码技术应用与实践》_04-公钥加密算法实践 - 数字签名.pptx

教学实论讲授任务部署实践操作分析讨论04撰写报告采用“五步法”组织实施

实践目的实践目的:(1)RSA数字签名算法(2)掌握RSA签名消息的方法和步骤

实践原理1.数字签名数字签名(DigitalSignature):以电子化形式,使用密码方法,在数字消息中嵌入一个秘密信息,以验证这个秘密信息是否正确来达到识别的目的,其实质是一种密码变换。

实践原理1.数字签名数字签名要起到认证和识别的目的,至少应具备以下特征:(1)不可否认性:签名者事后不能否认自己的签名。(2)可验证性:接收者能验证签名,而任何其他人都不能伪造签名。(3)可仲裁性:当双方发生争执时,可以由一个公正的第三方出面解决争端。

实践原理2.Crypto.PublicKey包算法发送方接收方加密公钥私钥签名私钥公钥

实践原理3.Crypto.Signature包签名算法有两个:PKCS1_PSS,PKCS1_v1_5步骤:实例化签名对象,如Crypto.Signature.

pkcs1_15.new(),第一个参数为私钥实例化hash算法调用sign方法进行签名

实践原理3.Crypto.Signature包验证签名算法有两个:PKCSs1_PSS,PKCS1_v1_5步骤:实例化签名对象,如Crypto.Signature.

pkcs1_15.new(),第一个参数为公钥实例化hash算法调用verfiy方法进行验证签名

实践原理3.Crypto.Cipher包签名算法有两个:PKCSs1_PSS,PKCS1_v1_5fromCrypto.CipherimportPKCS1_OAEP

fromCrypto.PublicKeyimportRSA

key=RSA.importKey(open(‘private.der).read())

cipher=PKCS1_OAEP.new(key)

ciphertext=cipher.encrypt(c)

实践原理4.示例代码#-*-coding:utf-8-*-

fromCrypto.SignatureimportPKCS1_PSS

fromCrypto.PublicKeyimportRSA

fromCrypto.HashimportSHA256

#产生密钥

key=RSA.generate(2048)

rsa_sign=PKCS1_PSS.new(key)

#产生hash

m=这是我方的消息.encode()

hash_obj=SHA256.new()

hash_obj.update(m)

#签名

ifrsa_sign.can_sign():

sign_results=rsa_sign.sign(hash_obj)

#验证签名

rsa_veri=PKCS1_PSS.new(key.publickey())

result=rsa_veri.verify(hash_obj,sign_results)

ifresult:

print(签名验证成功)

else:

print(签名验证失败)

实践要求实践要求:请大家模拟收发双方Alice和Bob,分别为他们产生公私钥Alice使用自己的私钥,签名一个文件,并一起发送给BobBob用Alice的公钥验证签名信息

实践报告实践报告要素:实践目的实践原理实践要求实践步骤实践结果(提交源代码)

实践操作(约80分钟)不同参数密钥的产生;公钥加密函数;公钥解密函数。消息的预处理与编码

文档评论(0)

1亿VIP精品文档

相关文档