网站大量收购闲置独家精品文档,联系QQ:2885784924

网络安全实验四.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

一、实验目的及任务

利用对称密码技术、非对称密码技术设计机密性服务应用。具体是选择如下任务之一或多项。

1、按如下具体过程实现数字信封应用:

(1)甲使用对称密钥对明文进行加密,生成密文信息。

(2)甲使用乙的公钥加密对称密钥,生成数字信封。

(3)甲将数字信封和密文信息一起发送给乙。

(4)乙接收到甲的加密信息后,使用自己的私钥打开数字信封,得到对称密钥。

(5)乙使用对称密钥对密文信息进行解密,得到最初的明文。

2、用图形界面或动画的形式,显示数字信封应用的具体过程。

3、增加哈希等算法应用,实现数据机密性、完整性、不可否认性服务。

二、实验环境

1、本地主机

2、编程工具(Java、C或其他语言)

三、实验方案/过程

任务1:编程演示数字信封的产生及解封过程,发送方产生数字信封,接收方解封数字信封获取信息。

任务2、3:编程演示具体过程。

四、思考题

1、数字信封技术为何要同时使用对称加密和非对称加密算法?

对称加密只需要一个密钥即可传输效率高,但是密钥管理困难,一旦密钥被截获就容易被破解,但是非对称加密使用两把不同的密钥,解决了对称加密密钥分发的难题,安全性高,但是速度较慢,通过将两种密钥技术的结合可以更高效、安全的加密数据。

2、实验中使用了哪种对称加密、非对称加密算法?(以及哈希算法?)

对称加密算法:AES、密钥长度:256位

非对称加密算法:RSA、密钥长度:2048位

哈希算法:SHA-256

3、画出程序流程图、附上关键代码,并对代码进行注释说明。

#生成甲的RSA密钥对

defgenerate_keys():

#生成RSA私钥和公钥

private_key=rsa.generate_private_key(

public_exponent=65537,#公钥指数

key_size=2048,#密钥长度

backend=default_backend()#使用默认的后端

)

public_key=private_key.public_key()#从私钥生成公钥

returnprivate_key,public_key

----------------------------------------------------------------------------------------------------------------

#生成乙的密钥对

defgenerate_keys():

#生成RSA私钥和公钥

private_key=rsa.generate_private_key(

public_exponent=65537,#公钥指数

key_size=2048,#密钥长度

backend=default_backend()#使用默认的后端

)

public_key=private_key.public_key()#从私钥生成公钥

returnprivate_key,public_key

----------------------------------------------------------------------------------------------------------------

#使用AES加密消息

defencrypt_message(message,session_key):

#生成随机的初始化向量(IV)

iv=os.urandom(16)

#创建AES加密器,使用CFB模式

cipher=Cipher(algorithms.AES(session_key),modes.CFB(iv),backend=default_backend())

encryptor=cipher.encryptor()

#使用PKCS7填充方式将消息填充到AES块大小

padder=sym_padding.PKCS7(algorithms.AES.block_size).padder()

padded_data=padder.update(message.encode())+padder.finalize()

#加密消息

ciphertext=encryptor.update(padded_data)+encryptor.finalize()

returniv+ciphe

文档评论(0)

青铜 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档