Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Crypto import Random
- from Crypto.PublicKey import RSA
- from Crypto.Signature import PKCS1_v1_5
- from Crypto.Hash import SHA512
- from base64 import b64encode, b64decode
- data_to_sign = "Secret"
- data_to_verify_1 = data_to_sign
- data_to_verify_2 = data_to_sign + "1"
- def rsa_keys():
- length = 2048
- private_key = RSA.generate(length, Random.new().read)
- public_key = private_key.publickey()
- return private_key.exportKey('PEM'), public_key.exportKey('PEM')
- def rsa_sign(private_key, data):
- digest = SHA512.new()
- digest.update(data.encode())
- signer = PKCS1_v1_5.new(private_key)
- return b64encode(signer.sign(digest))
- def rsa_verify(public_key, data, sign):
- sign = b64decode(sign)
- digest = SHA512.new()
- digest.update(data.encode())
- verifier = PKCS1_v1_5.new(public_key)
- return verifier.verify(digest, sign)
- def main():
- # GENERATE & EXPORT RSA KEYS
- # private_key, public_key = rsa_keys()
- # with open("public.key", 'w') as file:
- # file.write(public_key.decode())
- # with open("private.key", 'w') as file:
- # file.write(private_key.decode())
- # LOAD KEYS
- private_key = RSA.importKey(open("private.key", 'r').read())
- public_key = RSA.importKey(open("public.key", 'r').read())
- # CREATE SIGNATURE
- sign = rsa_sign(private_key, data_to_sign)
- # VERIFY SIGNATURE
- print("STATUS: ", end='')
- if rsa_verify(public_key, data_to_verify_1, sign):
- print("VERIFIED")
- else:
- print("FAILED")
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement