convert to doctest

git-svn-id: https://pdfminerr.googlecode.com/svn/trunk/pdfminer@170 1aa58f4a-7d42-0410-adbc-911cccaed67c
pull/1/head
yusuke.shinyama.dummy 2010-01-04 12:41:23 +00:00
parent 9486303103
commit ef93c4ee75
2 changed files with 28 additions and 20 deletions

View File

@ -10,6 +10,15 @@ This code is in the public domain.
##
class Arcfour(object):
"""
>>> Arcfour('Key').process('Plaintext').encode('hex')
'bbf316e8d940af0ad3'
>>> Arcfour('Wiki').process('pedia').encode('hex')
'1021bf0420'
>>> Arcfour('Secret').process('Attack at dawn').encode('hex')
'45a01f645fc35b383552544b9bf5'
"""
def __init__(self, key):
s = range(256)
j = 0
@ -36,10 +45,5 @@ class Arcfour(object):
# test
if __name__ == '__main__':
def doit(key, data):
cipher = Arcfour(key)
return ''.join( '%02X' % ord(c) for c in cipher.process(data) )
assert doit("Key", "Plaintext") == 'BBF316E8D940AF0AD3'
assert doit("Wiki", "pedia") == '1021BF0420'
assert doit("Secret", "Attack at dawn") == '45A01F645FC35B383552544B9BF5'
print 'test succeeded'
import doctest
doctest.testmod()

View File

@ -1033,6 +1033,13 @@ def rijndaelDecrypt(rk, nrounds, ciphertext):
# decrypt(key, fin, fout, keybits=256)
class RijndaelDecryptor(object):
"""
>>> key = '00010203050607080a0b0c0d0f101112'.decode('hex')
>>> ciphertext = 'd8f532538289ef7d06b506a4fd5be9c9'.decode('hex')
>>> RijndaelDecryptor(key, 128).decrypt(ciphertext).encode('hex')
'506812a45f08c889b97f5980038b8359'
"""
def __init__(self, key, keybits=256):
assert len(key) == KEYLENGTH(keybits)
(self.rk, self.nrounds) = rijndaelSetupDecrypt(key, keybits)
@ -1047,6 +1054,13 @@ class RijndaelDecryptor(object):
# encrypt(key, fin, fout, keybits=256)
class RijndaelEncryptor(object):
"""
>>> key = '00010203050607080a0b0c0d0f101112'.decode('hex')
>>> plaintext = '506812a45f08c889b97f5980038b8359'.decode('hex')
>>> RijndaelEncryptor(key, 128).encrypt(plaintext).encode('hex')
'd8f532538289ef7d06b506a4fd5be9c9'
"""
def __init__(self, key, keybits=256):
assert len(key) == KEYLENGTH(keybits)
(self.rk, self.nrounds) = rijndaelSetupEncrypt(key, keybits)
@ -1058,17 +1072,7 @@ class RijndaelEncryptor(object):
assert len(plaintext) == 16
return rijndaelEncrypt(self.rk, self.nrounds, plaintext)
def main(argv):
# test
key = '00010203050607080A0B0C0D0F101112'.decode('hex')
plaintext = '506812A45F08C889B97F5980038B8359'.decode('hex')
ciphertext = 'D8F532538289EF7D06B506A4FD5BE9C9'.decode('hex')
e = RijndaelEncryptor(key, 128)
text = e.encrypt(plaintext)
assert text == ciphertext
d = RijndaelDecryptor(key, 128)
text = d.decrypt(ciphertext)
assert text == plaintext
return 0
if __name__ == '__main__': sys.exit(main(sys.argv))
if __name__ == '__main__':
import doctest
doctest.testmod()