سؤال

ما هي أفضل وحدة / حزمة في Python لاستخدام DES / 3DES للتشفير / فك التشفير. هل يمكن لشخص ما تقديم مثال لتشفير البيانات مع DES / 3DES على Python.

هل كانت مفيدة؟

المحلول

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

بديل هو Chillkat مكتبة التشفير بيثون الذي يدعم الكثير من خوارزميات التشفير (بما في ذلك des & 3des)، لكنه ليس مجانا. استخدام عينة:

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

على أي حال، آمل أن تكون على دراية بأن أي منها ديس ولا ثلاثي الأبعاد يعتبر آمنا بالتأكيد في الوقت الحاضر، هناك العديد من البدائل أفضل (AES في المقام الأول إذا كنت ترغب في التمسك بالمعايير، أو Twofish، Blokfish، إلخ ...)

نصائح أخرى

يمكنك استعمال ال M2Crypto. بيثون المجمع ل openssl.. وبعد لديها ميزة أن تكون سريعة (بأسرع openssl)، لكن عيب الوثائق محدودة.

هنا هو المثال من إجابتي ل "كيفية تشفير 3Des في بيثون باستخدام المجمع M2Crypto؟"

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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top