defdecrypt(encrypted_text): """ 私钥解密 """ with open('rsa.pri', 'rb') as f: pri = f.read() prikey = rsa.PrivateKey.load_pkcs1(pri) original_text = rsa.decrypt(encrypted_text, prikey).decode("utf-8") return original_text
defsign(message): """ 私钥签名 """ with open('rsa.pri', 'rb') as f: pri = f.read() prikey = rsa.PrivateKey.load_pkcs1(pri) # 使用MD5所有散列算法生成摘要 signed_message = rsa.sign(message.encode('utf-8'), prikey, hash_method='MD5') return signed_message
defverify(message, signed_message): """ 公钥验证 """ with open('rsa.pub', 'rb') as f: pub = f.read() pubkey = rsa.PublicKey.load_pkcs1(pub) return rsa.verify(message.encode('utf-8'), signed_message, pubkey)
if __name__ == "__main__": text = "This is encrypted by rsa" create_keys() text = encrypt(text) print("加密结果:", text) text = decrypt(text) print("解密结果:", text) signed_message = sign(text) print("签名结果:", signed_message) print("验签结果:", verify(text, signed_message))
>>> MD5加密前:This text is hashed via md5 >>> MD5加密后:5d3a325f6a7fd4c8e4d4dad3879cfcdd >>> 签名结果: b'\x10^\xa53\x8a\xda\xf0"e}\x7f\x8dtg\x0f\x96\x08\xd2\xa2L\x16#c\xc6\xad*C\xa6\x84\x11A\xe9\t\xf9\\\xce\x03\x99\xf1\xb4\xfa\xdf\x83\xa4[\x1d\xbff\x9eO\x08\x92\xf4\x05E4"&v\xcfTD\xbbq\x87\x9f\xdb\xc0u\x9b(\x13\\\x0b<j*Y\x15\x97!\x0b\x17q1h\xcd\xb8\xe0\x98\xbb\xe7\xbb3\xbc\xb8\xef\xbf\xe1\xda$0:\xa0z\xbdP\xd9\xe65\xf4\x17X\xf5H\xc3\x15\x8f\xc67\xbb\x8e#Ba\xd8\'\x7f' >>> 验签结果:MD5