-
-
Save tclh123/5fb827581bfa19ba48396149329befdd to your computer and use it in GitHub Desktop.
Python 用 PyCrypto, M2Crypto, ncrypt, cryptography 3DES ECB mode 加密解密 demo。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes | |
from cryptography.hazmat.primitives import padding | |
from cryptography.hazmat.backends import default_backend | |
backend = default_backend() | |
key = os.urandom(16) | |
text = b'Hello, there!' | |
padder = padding.PKCS7(algorithms.TripleDES.block_size).padder() | |
unpadder = padding.PKCS7(algorithms.TripleDES.block_size).unpadder() | |
cipher = Cipher(algorithms.TripleDES(key), modes.ECB(), backend=backend) | |
encryptor = cipher.encryptor() | |
decryptor = cipher.decryptor() | |
encrypted_text = encryptor.update(padder.update(text) + padder.finalize()) + encryptor.finalize() | |
decrypted_text = unpadder.update(decryptor.update(encrypted_text) + decryptor.finalize()) + unpadder.finalize() | |
assert text == decrypted_text |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- Encoding: utf-8 -*- | |
from M2Crypto.EVP import Cipher | |
key = 'a' * 16 | |
text = 'Hello, there!' | |
cipher = Cipher(alg='des_ede_ecb', key=key, op=1, iv='\0'*16) | |
encrypted_text = cipher.update(text) | |
encrypted_text += cipher.final() | |
decipher = Cipher(alg='des_ede_ecb', key=key, op=0, iv='\0'*16) | |
decrypted_text = decipher.update(encrypted_text) | |
decrypted_text += decipher.final() | |
assert text == decrypted_text |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- Encoding: utf-8 -*- | |
from ncrypt.cipher import CipherType, EncryptCipher, DecryptCipher | |
cipher_type = CipherType('DES-EDE3', 'ECB') | |
key = 'a' * cipher_type.keyLength() | |
iv = '\0' * cipher_type.ivLength() | |
text = 'Hello, there!' | |
def do_encrypt(cipher_type, key, iv, plain_text): | |
enc = EncryptCipher(cipher_type, key, iv) | |
cipher_text = enc.finish(plain_text) | |
return cipher_text | |
def do_decrypt(cipher_type, key, iv, cipher_text): | |
dec = DecryptCipher(cipher_type, key, iv) | |
plain_text = dec.finish(cipher_text) | |
return plain_text | |
encrypted_text = do_encrypt(cipher_type, key, iv, text) | |
decrypted_text = do_decrypt(cipher_type, key, iv, encrypted_text) | |
assert text == decrypted_text |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- Encoding: utf-8 -*- | |
from Crypto.Cipher import DES3 | |
BS = DES3.block_size | |
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) | |
unpad = lambda s : s[0:-ord(s[-1])] | |
key = 'a' * 16 | |
text = 'Hello, there!' | |
cipher = DES3.new(key, DES3.MODE_ECB) | |
encrypted_text = cipher.encrypt(pad(text)) | |
decrypted_text = unpad(cipher.decrypt(encrypted_text)) | |
assert text == decrypted_text |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment