python 三重DES加密。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 三重DES加密。相关的知识,希望对你有一定的参考价值。
from Crypto.Cipher import DES3
import argparse
import base64
def _make_des3_encryptor(key, iv):
encryptor = DES3.new(key, DES3.MODE_CBC, iv)
return encryptor
def des3_encrypt(key, iv, data):
encryptor = _make_des3_encryptor(key, iv)
# length of padding
pad_len = 8 - len(data) % 8
# PKCS5 padding content
padding = chr(pad_len) * pad_len
data += padding
return encryptor.encrypt(data)
def des3_decrypt(key, iv, data):
encryptor = _make_des3_encryptor(key, iv)
result = encryptor.decrypt(data)
pad_len = ord(chr(result[-1]))
result = result[:-pad_len]
return result
def main():
parser = argparse.ArgumentParser(description='Decrypt or encrypt data with DES3')
parser.add_argument('--type', dest='type',
help='E for Encrypt or D for Decrypt')
parser.add_argument('--data', dest='data',
help='Data to encrypt or decrypt. '
'If decrypt input should be hex like BB0FE987F8A3ECD8F5475889D2D22314496F19CA7AFC2C24')
parser.add_argument('--key', dest='key',
help='Concatenated keys.')
parser.add_argument('--iv', dest='iv',
help='IV')
args = parser.parse_args()
if args.type == 'E':
print(base64.b16encode(des3_encrypt(args.key, args.iv, args.data)))
elif args.type == 'D':
print(des3_decrypt(args.key, args.iv, base64.b16decode(args.data)))
if __name__ == "__main__":
main()
以上是关于python 三重DES加密。的主要内容,如果未能解决你的问题,请参考以下文章
用三重DES加密完整对象
具有 2 个不同密钥的 Java 三重 DES 加密
三重Des对称加密在AndroidIos 和Java 平台的实现
如何在 C# 中使用三重 DES 执行 ISO 9797-1 MAC?
尝试解密 2 密钥三重 DES 的无效块填充
AES DES加密有啥区别啊?