Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.56 KB | None | 0 0
  1. from Crypto import Random
  2. from Crypto.PublicKey import RSA
  3. from Crypto.Signature import PKCS1_v1_5
  4. from Crypto.Hash import SHA512
  5. from base64 import b64encode, b64decode
  6.  
  7. data_to_sign = "Secret"
  8. data_to_verify_1 = data_to_sign
  9. data_to_verify_2 = data_to_sign + "1"
  10.  
  11.  
  12. def rsa_keys():
  13.     length = 2048
  14.     private_key = RSA.generate(length, Random.new().read)
  15.     public_key = private_key.publickey()
  16.     return private_key.exportKey('PEM'), public_key.exportKey('PEM')
  17.  
  18.  
  19. def rsa_sign(private_key, data):
  20.     digest = SHA512.new()
  21.     digest.update(data.encode())
  22.     signer = PKCS1_v1_5.new(private_key)
  23.     return b64encode(signer.sign(digest))
  24.  
  25.  
  26. def rsa_verify(public_key, data, sign):
  27.     sign = b64decode(sign)
  28.     digest = SHA512.new()
  29.     digest.update(data.encode())
  30.     verifier = PKCS1_v1_5.new(public_key)
  31.     return verifier.verify(digest, sign)
  32.  
  33.  
  34. def main():
  35.     # GENERATE & EXPORT RSA KEYS
  36.     # private_key, public_key = rsa_keys()
  37.     # with open("public.key", 'w') as file:
  38.     #     file.write(public_key.decode())
  39.     # with open("private.key", 'w') as file:
  40.     #     file.write(private_key.decode())
  41.     # LOAD KEYS
  42.     private_key = RSA.importKey(open("private.key", 'r').read())
  43.     public_key = RSA.importKey(open("public.key", 'r').read())
  44.     # CREATE SIGNATURE
  45.     sign = rsa_sign(private_key, data_to_sign)
  46.  
  47.     # VERIFY SIGNATURE
  48.     print("STATUS: ", end='')
  49.     if rsa_verify(public_key, data_to_verify_1, sign):
  50.         print("VERIFIED")
  51.     else:
  52.         print("FAILED")
  53.  
  54.  
  55. if __name__ == '__main__':
  56.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement