import base64
from Crypto.Signature import PKCS1_v1_5
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA
# 生成公钥和私钥
def GetKeyPair():
#生成键值对
key=RSA.generate(1024)
print(key.export_key())
print(key.publickey().export_key())
private_key_str = base64.b64encode(key.export_key()).decode('utf-8') #使用的是str类型
public_key_str = base64.b64encode(key.publickey().export_key()).decode('utf-8') #使用的是str类型的数据
return (private_key_str,public_key_str)
(prik,pubk) = GetKeyPair()
# print(prik)
# print(pubk)
生成公钥和私钥。并将数据进行base64进行encode。
数据签名主要是用于身份认证,保证数据的真实性
签名是用的密钥进行加密,公钥进行签名验证
# 使用Crypto生成签名
def sign(privatekey,message): #privatekey使用的是str类型的数据,message进行utf-8转byte类型
private_key = RSA.importKey(base64.b64decode(privatekey.encode('utf-8')))
cipher = PKCS1_v1_5.new(private_key)
h = SHA.new(message.encode('utf-8'))
signature = cipher.sign(h)
return base64.b64encode(signature)
#使用Crypto进行签名验证
def design(publickey,signature,message):
public_key=RSA.importKey(base64.b64decode(publickey.encode('utf-8')))
verifier=PKCS1_v1_5.new(public_key)
hash_object = SHA.new(message.encode("utf-8"))
if verifier.verify(hash_object, signature):
print("pass")
else:
print("error")
使用数据进行加解密,公钥进行加密数据,私钥进行解密数据
import base64
from Crypto.Signature import PKCS1_v1_5
from Crypto.PublicKey import RSA
from Crypto.Hash import SHA
from Crypto.Cipher import PKCS1_v1_5 as pknew
message='测试啊,不知道行不行'
privatek='LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlDV3dJQkFBS0JnUURKQzhsajJEVzE3dStKQWE0NHdCMjRjWEFWaFlQaGV5VEtzN09WQWhDT21oTGoxd2V0CktNT0FaQzBZYTJ6ellHdTJBTEM5dVdwYis3QnhBMWNZeGFXRTVZNC9kYXRhSE5vVEUxcjgzcHU1UXNxcXdqS00KNTZ4c0FRbnZnZWVSRDkwb3lqTUdXQnVGRzhVTVdoSXdab2FQOTZaSWVPMU5uMlAvdkgyTHRIYkp3UUlEQVFBQgpBb0dBREpmQmFKQ2RaS1R2dWd3eDVub2FJbmh3aGRpVUZ5YUllbTNoSEw5QlhEMUlXNThYYXdBM3BxNGZxUHpwCm1TRDcvaTF5NUo5ZGl4OXJ3Tmh0dHk2Q0hJRmg0ZXVVZGZxZFVkZmNOV0dvaUxVdDZTNlovOCs2UnZOS3JIUVUKM1VWWndacWtyME0rb0RGN0ZYOXZTNGp6SDZvSFdkbk0xQmlqRFpGWU1ZN1dFWFVDUVFEUUtqMlh6b3N0SkV3UApTU2s1N2lUUDNCOFRqck15b3JRNFF1czFBNlpqa3NOMXJTbk52aGNJK0hwb2F2ZzFQWmc4NWZVUkNtdjlDQ3FjCkZzVnZUUGFqQWtFQTl6N0IrbWFvZENhQVNQbzlDNFVWWHYvY0tTd0dnRFlFQk10Ris5eHBRYVh5anJDR0RDWTIKSUpCa0l4NjFkdWRFM096Y1NIbXVkN0Z4c2ZpMXZmdllTd0pBR2NRZ3U1bWxRSUV0cVBhMVU2WldpQ1FHOUxURgpHWTlxSDB5cE1IYXpNY0FJMFpnTmhKbnkzL2xocldzUUxnYmh3U2YxblpaY3A0VkxRT2JRcVdZdFlRSkFSZ0lhCk1RbnlkdmtUNkJZYlJQREpEVjVMZThrQWlqdEJSZzQ4NGNVV2RNVkZla3ZYbVFjVTJvR29LUjJmNm13djNwS2YKQ1ZLVEtVY3dWMkdDTEtwc0l3SkFXNk96TlVMRmk3SlF6amN6YjM0TW1ZaGJaUFRlSHlsbVFud2xjKzBtVmwzUQowOVRjT2l1dytsRWF4aWJIVjQwWE5jNTR4eUpYejYxbS9nNTlOYkZFdGc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQ=='
publick='LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FESkM4bGoyRFcxN3UrSkFhNDR3QjI0Y1hBVgpoWVBoZXlUS3M3T1ZBaENPbWhMajF3ZXRLTU9BWkMwWWEyenpZR3UyQUxDOXVXcGIrN0J4QTFjWXhhV0U1WTQvCmRhdGFITm9URTFyODNwdTVRc3Fxd2pLTTU2eHNBUW52Z2VlUkQ5MG95ak1HV0J1Rkc4VU1XaEl3Wm9hUDk2WkkKZU8xTm4yUC92SDJMdEhiSndRSURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ=='
private_key = RSA.importKey(base64.b64decode(privatek.encode('utf-8')))
public_key=RSA.importKey(base64.b64decode(publick.encode('utf-8')))
#对数据进行加密,输出后进行解密数据
# 创建加密器并使用公钥进行加密
cipher = pknew.new(public_key)
encrypted_message = cipher.encrypt(message.encode('utf-8'))
print(encrypted_message)
# 使用私钥进行解密
decipher = pknew.new(private_key)
decrypted_message = decipher.decrypt(encrypted_message, sentinel=None)
print(decrypted_message.decode('utf-8'))