Skip to content

Instantly share code, notes, and snippets.

@cevaris cevaris/generate_key.sh
Last active Sep 15, 2019

Embed
What would you like to do?
Sign and Verify using Python pycrypto
#!/usr/bin/env bash
# Generate RSA private key
openssl genrsa -out private_key.pem 1024
pycrypto==2.6.1
#!/usr/bin/env python
from base64 import (
b64encode,
b64decode,
)
from Crypto.Hash import SHA256
from Crypto.Signature import PKCS1_v1_5
from Crypto.PublicKey import RSA
message = "I want this stream signed"
digest = SHA256.new()
digest.update(message)
# Read shared key from file
private_key = False
with open ("private_key.pem", "r") as myfile:
private_key = RSA.importKey(myfile.read())
# Load private key and sign message
signer = PKCS1_v1_5.new(private_key)
sig = signer.sign(digest)
# Load public key and verify message
verifier = PKCS1_v1_5.new(private_key.publickey())
verified = verifier.verify(digest, sig)
assert verified, 'Signature verification failed'
print 'Successfully verified message'
@cevaris

This comment has been minimized.

Copy link
Owner Author

cevaris commented Mar 2, 2015

To test

  • Invoke ./generate_key.sh from shell
  • Pip instlal requirements.txt file
  • Invoke sign_verify.py python script
@cryptid11

This comment has been minimized.

Copy link

cryptid11 commented Mar 4, 2018

If I do not have the key object but just the pubkey string and I need to rewrite this function:


def verify(message, signature, pubkey):
    hash = MD5.new(message).digest()
    return pubkey.verify(hash, signature)

how do I do this? (basically I need to create a random pubkey object and then changing in it the only usefult info that is the actual pubkey)

btw pubkey is defined as Crypto.PublicKey.RSA.generate(1024, os.urandom).publickey()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.