Python3.2 --md5

python3.x已经把md5 module移除了。要想用md5得用hashlib module,以下是帮助手册中给的标准调用

import hashlib
m = hashlib.md5()
m.update(b"Nobody inspects the spammish repetition") #参数必须是byte类型,否则报Unicode-objects must be encoded before hashing错误
md5value=m.hexdigest()
print(md5value)  #bb649c83dd1ea5c9d9dec9a18df0ffe9

其实可简写,如下面的md5的例子,hashlib.md5(data),就可以了


但是对中文字符串md5怎么办?

中文字符在Python中是以unicode存在的,同一个字符串在不

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我的回答中代码部分出现了一些问题。以下是修改后的完整代码: ```python from Crypto.Util.number import getRandomInteger from Crypto.Cipher import DES from Crypto.Hash import MD5 from Crypto.Signature import DSS from Crypto.PublicKey import DSA # S1. 生成Diffie-Hellman密钥对 p = getRandomInteger(1024) g = 2 a = getRandomInteger(1024) A = pow(g, a, p) # Alice的公钥 b = getRandomInteger(1024) B = pow(g, b, p) # Bob的公钥 # S2. Alice将自己的公钥发送给Bob bob_pubkey = B # S3.1 加密消息 key = MD5.new("secret_key".encode()).digest()[:8] # 使用MD5哈希值生成8字节的DES密钥 cipher = DES.new(key, DES.MODE_ECB) message = "Hello, Bob!" ciphertext = cipher.encrypt(message.encode()) # S3.2 计算哈希值 hash = MD5.new(ciphertext) # S3.3 签名 privkey = DSA.generate(1024) signer = DSS.new(privkey, 'fips-186-3') signature = signer.sign(hash) # S3.4 发送消息给Bob bob_message = (ciphertext, signature, privkey.publickey()) # S4. Bob解密消息并验证签名 # S4.1 计算哈希值 hash = MD5.new(bob_message[0]) # S4.2 验证签名 verifier = DSS.new(bob_pubkey, 'fips-186-3') try: verifier.verify(hash, bob_message[1]) except ValueError: print("Invalid signature") else: # S4.4 解密消息 key = MD5.new("secret_key".encode()).digest()[:8] cipher = DES.new(key, DES.MODE_ECB) message = cipher.decrypt(bob_message[0]).decode() print(message) ``` 注意,这段代码仅用于演示加密过程,实际应用中需要更严格的安全措施。例如,需要使用更长的密钥和更安全的哈希算法,以及采取防止中间人攻击的措施等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值