التشفير وفك التشفير الآمن باستخدام PyCrypto AES-256
PyCrypto هي مكتبة قوية لعمليات التشفير في Python. إحدى المهام الشائعة هي تشفير البيانات وفك تشفيرها باستخدام AES-256، وهي خوارزمية تشفير متوافقة مع معايير الصناعة تُستخدم لحماية البيانات الحساسة.
تعريف المشكلة:
بناء تشفير موثوق. وتتطلب وظائف فك التشفير باستخدام PyCrypto معالجة العديد من المشكلات المحتملة:
تعزيز الأمان والوظائف:
لمعالجة هذه المخاوف، تم تطوير تطبيق باستخدام PyCrypto: قاعدة الاستيراد64 استيراد هاشلب من تشفير الاستيراد عشوائي من Crypto.Cipher استيراد AES فئة AESCipher (كائن): تعريف __init__(الذات، المفتاح): self.bs = AES.block_size self.key = hashlib.sha256(key.encode()).digest() تشفير Def (الذاتي، الخام): الخام = الذات._pad(الخام) iv = Random.new().read(AES.block_size) التشفير = AES.new(self.key, AES.MODE_CBC, iv) إرجاع base64.b64encode(iv cipher.encrypt(raw.encode())) فك التشفير (الذاتي، enc): إنك = base64.b64decode(إنك) الرابع = enc[:AES.block_size] التشفير = AES.new(self.key, AES.MODE_CBC, iv) إرجاع AESCipher._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8') ديف _pad(self, s): إرجاع s (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs) @staticmethod تعريف _unpad(s): return s[:-ord(s[len(s)-1:])]import base64 import hashlib from Crypto import Random from Crypto.Cipher import AES class AESCipher(object): def __init__(self, key): self.bs = AES.block_size self.key = hashlib.sha256(key.encode()).digest() def encrypt(self, raw): raw = self._pad(raw) iv = Random.new().read(AES.block_size) cipher = AES.new(self.key, AES.MODE_CBC, iv) return base64.b64encode(iv cipher.encrypt(raw.encode())) def decrypt(self, enc): enc = base64.b64decode(enc) iv = enc[:AES.block_size] cipher = AES.new(self.key, AES.MODE_CBC, iv) return AESCipher._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8') def _pad(self, s): return s (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs) @staticmethod def _unpad(s): return s[:-ord(s[len(s)-1:])]التحسينات الرئيسية والرابعة:
يتم تجزئة المفتاح باستخدام SHA-256 لضمان طول 32 بايت.
: يستخدم هذا التطبيق AES-256 في وضع CBC (Cipher Block Chaining). يوصى بوضع CBC لتشفير البيانات في الكتل، ويتم استخدام IVs لضمان تشفير كل كتلة بشكل فريد.
اعتبارات IV
: يعتبر IV قيمة مهمة التي يجب أن يتم إنشاؤها بشكل آمن. لا يؤثر استخدام IVs مختلفة للتشفير وفك التشفير على النتيجة، ولكن يجب أن يتطابق IV مع IV المستخدم أثناء التشفير حتى ينجح فك التشفير.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3