⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_pydes.py

📁 A pure python module which implements the DES and Triple-DES encryption algorithms. Triple DES is ei
💻 PY
字号:
from pyDes import *############################################################################## 				Examples				    ##############################################################################def _example_triple_des_():	from time import time	# Utility module	from binascii import unhexlify as unhex	# example shows triple-des encryption using the des class	print ("Example of triple DES encryption in default ECB mode (DES-EDE3)\n")	print ("Triple des using the des class (3 times)")	t = time()	k1 = des(unhex("133457799BBCDFF1"))	k2 = des(unhex("1122334455667788"))	k3 = des(unhex("77661100DD223311"))	d = "Triple DES test string, to be encrypted and decrypted..."	print ("Key1:      %r" % k1.getKey())	print ("Key2:      %r" % k2.getKey())	print ("Key3:      %r" % k3.getKey())	print ("Data:      %r" % d)	e1 = k1.encrypt(d)	e2 = k2.decrypt(e1)	e3 = k3.encrypt(e2)	print ("Encrypted: %r" % e3)	d3 = k3.decrypt(e3)	d2 = k2.encrypt(d3)	d1 = k1.decrypt(d2)	print ("Decrypted: %r" % d1)	print ("DES time taken: %f (%d crypt operations)" % (time() - t, 6 * (len(d) / 8)))	print ("")	# Example below uses the triple-des class to achieve the same as above	print ("Now using triple des class")	t = time()	t1 = triple_des(unhex("133457799BBCDFF1112233445566778877661100DD223311"))	print ("Key:       %r" % t1.getKey())	print ("Data:      %r" % d)	td1 = t1.encrypt(d)	print ("Encrypted: %r" % td1)	td2 = t1.decrypt(td1)	print ("Decrypted: %r" % td2)	print ("Triple DES time taken: %f (%d crypt operations)" % (time() - t, 6 * (len(d) / 8)))def _example_des_():	from time import time	# example of DES encrypting in CBC mode with the IV of "\0\0\0\0\0\0\0\0"	print ("Example of DES encryption using CBC mode\n")	t = time()	k = des("DESCRYPT", CBC, "\0\0\0\0\0\0\0\0")	data = "DES encryption algorithm"	print ("Key      : %r" % k.getKey())	print ("Data     : %r" % data)	d = k.encrypt(data)	print ("Encrypted: %r" % d)	d = k.decrypt(d)	print ("Decrypted: %r" % d)	print ("DES time taken: %f (6 crypt operations)" % (time() - t))	print ("")def _filetest_():	from time import time	f = open("pyDes.py", "rb+")	d = f.read()	f.close()	t = time()	k = des("MyDESKey")	d = k.encrypt(d, " ")	f = open("pyDes.py.enc", "wb+")	f.write(d)	f.close()		d = k.decrypt(d, " ")	f = open("pyDes.py.dec", "wb+")	f.write(d)	f.close()	print ("DES file test time: %f" % (time() - t))	def _profile_():	try:		import cProfile as profile	except:		import profile	profile.run('_fulltest_()')	#profile.run('_filetest_()')def _fulltest_():	# This should not produce any unexpected errors or exceptions	from time import time	from binascii import unhexlify as unhex	from binascii import hexlify as dohex	t = time()	data = "DES encryption algorithm".encode('ascii')	k = des("\0\0\0\0\0\0\0\0", CBC, "\0\0\0\0\0\0\0\0")	d = k.encrypt(data)	if k.decrypt(d) != data:		print ("Test 1:  Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 1:  Successful")	data = "Default string of text".encode('ascii')	k = des("\0\0\0\0\0\0\0\0", CBC, "\0\0\0\0\0\0\0\0")	d = k.encrypt(data, "*")	if k.decrypt(d, "*") != data:		print ("Test 2:  Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 2:  Successful")	data = "String to Pad".encode('ascii')	k = des("\r\n\tABC\r\n")	d = k.encrypt(data, "*")	if k.decrypt(d, "*") != data:		print ("Test 3:  Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 3:  Successful")	k = des("\r\n\tABC\r\n")	d = k.encrypt(unhex("000102030405060708FF8FDCB04080"), unhex("44"))	if k.decrypt(d, unhex("44")) != unhex("000102030405060708FF8FDCB04080"):		print ("Test 4a: Error: Unencypted data block does not match start data")	elif k.decrypt(d) != unhex("000102030405060708FF8FDCB0408044"):		print ("Test 4b: Error: Unencypted data block does not match start data")	else:		print ("Test 4:  Successful")	data = "String to Pad".encode('ascii')	k = des("\r\n\tkey\r\n")	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 5a: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	# Try same with padmode set on the class instance.	k = des("\r\n\tkey\r\n", padmode=PAD_PKCS5)	d = k.encrypt(data)	if k.decrypt(d) != data:		print ("Test 5b: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 5:  Successful")	k = triple_des("MyDesKey\r\n\tABC\r\n0987*543")	d = k.encrypt(unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080"))	if k.decrypt(d) != unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080"):		print ("Test 6:  Error: Unencypted data block does not match start data")	else:		print ("Test 6:  Successful")	k = triple_des("\r\n\tABC\r\n0987*543")	d = k.encrypt(unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080"))	if k.decrypt(d) != unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080"):		print ("Test 7:  Error: Unencypted data block does not match start data")	else:		print ("Test 7:  Successful")	k = triple_des("MyDesKey\r\n\tABC\r\n0987*54B", CBC, "12341234")	d = k.encrypt(unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080"))	if k.decrypt(d) != unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080"):		print ("Test 8:  Error: Triple DES CBC failed.")	else:		print ("Test 8:  Successful")	k = triple_des("MyDesKey\r\n\tABC\r\n0987*54B", CBC, "12341234")	d = k.encrypt(unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDC"), '.')	if k.decrypt(d, '.') != unhex("000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDCB04080000102030405060708FF8FDC"):		print ("Test 9:  Error: Triple DES CBC with padding failed.")	else:		print ("Test 9:  Successful")	k = triple_des("\r\n\tkey\rIsGoodKey")	data = "String to Pad".encode('ascii')	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 10: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 10: Successful")	k = triple_des("\r\n\tkey\rIsGoodKey")	data = "String not need Padding.".encode('ascii')	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 11: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 11: Successful")	# Test PAD_PKCS5 with CBC encryption mode.	k = des("IGoodKey", mode=CBC, IV="\0\1\2\3\4\5\6\7")	data = "String to Pad".encode('ascii')	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 12: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 12: Successful")	k = des("IGoodKey", mode=CBC, IV="\0\1\2\3\4\5\6\7")	data = "String not need Padding.".encode('ascii')	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 13: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 13: Successful")	k = triple_des("\r\n\tkey\rIsGoodKey", mode=CBC, IV="\0\1\2\3\4\5\6\7")	data = "String to Pad".encode('ascii')	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 14: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 14: Successful")	k = triple_des("\r\n\tkey\rIsGoodKey", mode=CBC, IV="\0\1\2\3\4\5\6\7")	data = "String not need Padding.".encode('ascii')	d = k.encrypt(data, padmode=PAD_PKCS5)	if k.decrypt(d, padmode=PAD_PKCS5) != data:		print ("Test 15: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 15: Successful")	k = triple_des("\r\n\tkey\rIsGoodKey", mode=CBC, IV="\0\1\2\3\4\5\6\7", padmode=PAD_PKCS5)	data = "String to Pad".encode('ascii')	d = k.encrypt(data)	if k.decrypt(d) != data:		print ("Test 16: Error: decrypt does not match. %r != %r" % (data, k.decrypt(d)))	else:		print ("Test 16: Successful")	print ("")	print ("Total time taken: %f" % (time() - t))if __name__ == '__main__':	#_example_des_()	#_example_triple_des_()	_fulltest_()	#_filetest_()	#_profile_()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -