示例#1
0
def derive_public_key(private_key):  
    pre_public_key = []
    for byte in range(256):
        message = bytearray(8)
        message[0] = byte
        ciphertext = homomorphic_encrypt(message, private_key, bytearray(sha256(private_key + message + "pre_public").digest()))
        pre_public_key.append(bytes_to_words(ciphertext, 4))
        
    public_key = []
    for byte in range(256):
        message = bytearray()
        message.append(byte)        
        ciphertext = encrypt(message, pre_public_key, prng=lambda amount: random(amount, private_key, chr(byte)))[0] # encrypt returns a list with 1 ciphertext in it    
        public_key.append(bytes_to_words(ciphertext, 4))    
    return public_key
示例#2
0
def encrypt_file(filename, keyfile, crypted_filename = None, 
                 ascii_armour = False):
    if not crypted_filename:
        crypted_filename    = filename + '.rsa'

    plaintext               = load(filename)
    key                     = publickey.load_key(keyfile)
    ciphertext              = publickey.encrypt(key, plaintext)

    if not ascii_armour:
        ciphertext          = '\x00' + ciphertext
    else:
        ciphertext          = 'A' + base64.encodestring(ciphertext)

    print '[+] encrypted %s to %s...' % (filename, crypted_filename)
    dump(crypted_filename, ciphertext)
    print '[+] file written...'
示例#3
0
def test_crypto():
    message = 'This is a test message. 0123456789ABCDEF'
    print '\t[+] generating a 2048-bit RSA key... ',
    flush()
    key     = publickey.generate_key( 2048 )
    assert( key.size() == 2047 )
    print 'OK!'

    print '\t[+] can we encrypt with this key? ',
    flush()
    assert( key.can_encrypt() )
    print 'yes'

    print '\t[+] encrypting \'%s\'...' % message
    print '\t[+] using %d-bit RSA key' % (key.size() + 1)

    ct      = publickey.encrypt( key, message )
    pt      = publickey.decrypt( key, ct )

    print '\t[+] decryped ciphertext as \'%s\'' % pt
    assert( pt == message )
示例#4
0
def derive_public_key(private_key):
    pre_public_key = []
    for byte in range(256):
        message = bytearray(8)
        message[0] = byte
        ciphertext = homomorphic_encrypt(
            message, private_key,
            bytearray(sha256(private_key + message + "pre_public").digest()))
        pre_public_key.append(bytes_to_words(ciphertext, 4))

    public_key = []
    for byte in range(256):
        message = bytearray()
        message.append(byte)
        ciphertext = encrypt(
            message,
            pre_public_key,
            prng=lambda amount: random(amount, private_key, chr(byte)))[
                0]  # encrypt returns a list with 1 ciphertext in it
        public_key.append(bytes_to_words(ciphertext, 4))
    return public_key