认证协议设计与实现

 

一、实验目的

初步认识密码学认证协议设计,设计简单的密码学认证协议,助力后面的认证协议学习,同时掌握一台主机模拟多个实体的技巧。

二、实验器材

pycharm+python3.11

三、实验内容
实验要求:自己配置python环境,编写程序实现下面的认证协议,初始化系统,运行认证协议,完成认证。

(1)编写程序实现协议。

(2)加密算法采用DES加密算法,在本协议中调用DES算法的程序实现加密,同时完善DES算法程序实现解密运算。Alice和Bob都要调用DES算法的程序。

(3)在初始化这个单向认证系统时,Bob的数据库要保存至少10个用户的用户名和他们与Bob共享的对称加密密钥。

程序:

 1 from Crypto.Cipher import DES
 2 from Crypto.Random import get_random_bytes
 3 from Crypto.Util.Padding import pad, unpad
 4 import binascii
 5 
 6 # DES要求密钥是8字节长度
 7 key = b'8bytekey'
 8 
 9 # 创建一个DES对象
10 cipher = DES.new(key, DES.MODE_ECB)
11 
12 # 假设Alice想要发送一个随机数给Bob
13 random_number = get_random_bytes(8)  # DES块大小是8字节
14 print(f"Alice发送的随机数(明文): {binascii.hexlify(random_number)}")
15 
16 # Alice使用DES加密随机数
17 encrypted_msg = cipher.encrypt(pad(random_number, DES.block_size))
18 print(f"Alice发送的加密消息: {binascii.hexlify(encrypted_msg)}")
19 
20 # Bob收到消息并解密
21 decrypted_msg = unpad(cipher.decrypt(encrypted_msg), DES.block_size)
22 print(f"Bob解密后的消息(明文): {binascii.hexlify(decrypted_msg)}")
23 
24 # 检查解密后的随机数是否与Alice发送的相同
25 assert random_number == decrypted_msg
26 print("解密后的随机数与Alice发送的相同,通信成功!")

结果输出:

posted @ 2024-01-19 18:25  棒打鲜橙不加冰  阅读(18)  评论(0编辑  收藏  举报