13

暗号化/復号化に des /3des を使用する Python の最適なモジュール/パッケージは何ですか。誰かが Python で des/3des を使用してデータを暗号化する例を提供できますか。

4

2 に答える 2

21

pyDesは、DES と 3DES の両方に使用できます。使用例:

from pyDes import *

data = "Please encrypt my data"
k = des("DESCRYPT", CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
d = k.encrypt(data)
print "Encrypted: %r" % d
print "Decrypted: %r" % k.decrypt(d)
assert k.decrypt(d, padmode=PAD_PKCS5) == data

代替手段は、多くの暗号化アルゴリズム (DES および 3DES を含む) をサポートするChillkat Python Encryption Library ですが、無料ではありません。使用例:

crypt.put_CryptAlgorithm("des")
crypt.put_CipherMode("cbc")
crypt.put_KeyLength(64)
crypt.put_PaddingScheme(0)
crypt.put_EncodingMode("hex")
ivHex = "0001020304050607"
crypt.SetEncodedIV(ivHex,"hex")
keyHex = "0001020304050607"
crypt.SetEncodedKey(keyHex,"hex")
encStr = crypt.encryptStringENC("The quick brown fox jumps over the lazy dog.")
print encStr
decStr = crypt.decryptStringENC(encStr)
print decStr

とにかく、最近では DES も 3DES も特に安全とは見なされていないことを認識してほしいと思います。より良い代替手段がたくさんあります(標準に固執したい場合は、そもそも AES や、Twofish、Blowfish など...)。

于 2010-03-13T14:09:32.637 に答える
7

OpenSSLにはM2Crypto Python ラッパーを使用できます。高速 (OpenSSL と同程度) であるという利点がありますが、ドキュメントが限られているという欠点があります。

これは、 「M2Crypto ラッパーを使用して Python で 3DES 暗号化する方法」に対する私の回答の例です。

with open(keyfile, 'rb') as f:
    key = f.read()
encrypt = 1
cipher = Cipher(alg='des_ede3_ecb', key=key, op=encrypt, iv='\0'*16)
ciphertext = cipher.update(plaintext)
ciphertext += cipher.final()
于 2010-08-25T17:54:34.503 に答える