[pycrypto] Typo or bug?
Dave Pawson
dave.pawson at gmail.com
Tue Jun 26 02:52:32 EDT 2012
Just re-installing pycrypto for my own use. Version 2.6, with python 2.7
(src src http://www.turnkeylinux.org/blog/python-symmetric-encryption )
def _lazysecret(secret, blocksize=16, padding='}'):
"""pads secret if not legal AES block size (16, 24, 32)"""
if not len(secret) in (16, 24, 32):
return secret + (blocksize - len(secret)) * padding
return secret
def decrypt(ciphertext, secret, lazy=True, checksum=True):
"""decrypt ciphertext with secret
ciphertext - encrypted content to decrypt
secret - secret to decrypt ciphertext
lazy - pad secret if less than legal blocksize (default: True)
checksum - verify crc32 byte encoded checksum (default: True)
returns plaintext
"""
secret = _lazysecret(secret) if lazy else secret
print secret, len(secret)
encobj = AES.new(secret, AES.MODE_CFB)
plaintext = encobj.decrypt(ciphertext)
if checksum:
crc, plaintext = (plaintext[-4:], plaintext[:-4])
if not crc == struct.pack("i", zlib.crc32(plaintext)):
print "Checksum error"
raise CheckSumError("checksum mismatch")
return plaintext
run this and I get
dkdkkd}}}}}}}}}} 16
Traceback (most recent call last):
File "/files/python/fp/fp.py", line 148, in <module>
domain(sys.argv)
File "/files/python/fp/fp.py", line 131, in domain
str=decrypt(encContents,secret)
File "/files/python/fp/fp.py", line 97, in decrypt
encobj = AES.new(secret, AES.MODE_CFB)
File "/usr/lib64/python2.7/site-packages/Crypto/Cipher/AES.py", line
95, in new
return AESCipher(key, *args, **kwargs)
File "/usr/lib64/python2.7/site-packages/Crypto/Cipher/AES.py", line
59, in __init__
blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
File "/usr/lib64/python2.7/site-packages/Crypto/Cipher/blockalgo.py",
line 141, in __init__
self._cipher = factory.new(key, *args, **kwargs)
ValueError: IV must be 16 bytes long
So although the 'secret' is 16 bytes long, I'm getting a report saying it isn't?
Any suggestions please.
TIA
--
Dave Pawson
XSLT XSL-FO FAQ.
Docbook FAQ.
http://www.dpawson.co.uk
More information about the pycrypto
mailing list