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加密有啥区别啊?