تشفير البيانات بين PHP وJavaScript باستخدام Rijndael-128
في هذا السياق، يظهر لنا رغبتك في إعادة تحقيق التشفير والفك التشفير بين لغة البرمجة PHP وجافا سكريبت. يبدو أن الشيفرة المقدمة هي لتشفير وفك تشفير باستخدام خوارزمية التشفير Rijndael-128 مع وضع التشفير ECB. يمكننا بسهولة تحقيق نفس الوظائف في جافا سكريبت باستخدام مكتبة CryptoJS.
لنقم أولاً بتضمين مكتبة CryptoJS في مشروعك. يمكنك القيام بذلك عن طريق إضافة الرابط التالي إلى العنصر في صفحتك:
-
كيفية العثور على هيكل مخطط Oracle27/03/2024
-
كيفية تثبيت JDK في IntelliJ IDEA05/03/2024
html<script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js">script>
الآن، يمكنك كتابة الدوال في جافا سكريبت:
html<script>
var Security = {
encrypt: function(input, key) {
var blockSize = 16; // حجم كتلة البيانات
var paddedInput = Security.pkcs5_pad(input, blockSize);
var encrypted = CryptoJS.AES.encrypt(paddedInput, key, { mode: CryptoJS.mode.ECB });
return encrypted.toString();
},
decrypt: function(sStr, sKey) {
var decrypted = CryptoJS.AES.decrypt(sStr, sKey, { mode: CryptoJS.mode.ECB });
return Security.pkcs5_unpad(decrypted.toString(CryptoJS.enc.Utf8));
},
pkcs5_pad: function(text, blockSize) {
var pad = blockSize - (text.length % blockSize);
return text + Array(pad + 1).join(String.fromCharCode(pad));
},
pkcs5_unpad: function(text) {
var pad = text.charCodeAt(text.length - 1);
return text.slice(0, -pad);
}
};
script>
يمكنك استخدام هذه الدوال في جافا سكريبت بنفس الطريقة التي تستخدم بها الدوال في الشيفرة PHP. يجب عليك أن تتأكد من استخدام نفس المفتاح في كلتا الحالتين لضمان التشابه في عملية التشفير وفك التشفير.
المزيد من المعلومات
في هذا السياق، يمكننا توسيع المعلومات حول عملية التشفير وفك التشفير التي تم تنفيذها في الشيفرة المقدمة في السياق السابق.
لنتعمق أكثر في العمليات المستخدمة في الشيفرة PHP:
-
تشفير البيانات:
- تستخدم الدالة
Security::encrypt
لتشفير البيانات باستخدام خوارزمية Rijndael-128 ووضع ECB. - يتم استخدام دالة
mcrypt_get_block_size
للحصول على حجم كتلة البيانات المستخدم في التشفير. - تُستخدم دالة
Security::pkcs5_pad
لتطبيق حشو PKCS5 على البيانات قبل التشفير. - يتم إنشاء مفتاح عشوائي باستخدام
mcrypt_create_iv
، ومن ثم يتم تهيئة الجلسة لتشفير البيانات باستخدامmcrypt_generic_init
وmcrypt_generic
، وأخيراً يتم إغلاق الجلسة بواسطةmcrypt_generic_deinit
وmcrypt_module_close
.
- تستخدم الدالة
-
فك تشفير البيانات:
- تستخدم الدالة
Security::decrypt
لفك تشفير البيانات. - يتم استخدام دالة
mcrypt_decrypt
مع مفتاح معين لفك تشفير البيانات المشفرة. - بعد ذلك، يتم فحص البيانات المفكوكة لإزالة الحشو PKCS5 باستخدام دالة
Security::pkcs5_unpad
.
- تستخدم الدالة
بالنسبة للشيفرة المقدمة في جافا سكريبت:
-
تشفير البيانات:
- يتم استخدام مكتبة CryptoJS لتنفيذ عملية التشفير.
- تُستخدم دالة
CryptoJS.AES.encrypt
مع وضع ECB لتشفير البيانات. - يُطبق حشو PKCS5 باستخدام دوال
Security.pkcs5_pad
المعرفة في جافا سكريبت.
-
فك تشفير البيانات:
- يتم استخدام دالة
CryptoJS.AES.decrypt
لفك تشفير البيانات. - تُستخدم دالة
Security.pkcs5_unpad
لإزالة الحشو PKCS5 من البيانات المفكوكة.
- يتم استخدام دالة
لضمان التوافق بين التشفير في PHP وجافا سكريبت، يجب استخدام نفس المفتاح في كلا الاتجاهين، ويفضل أيضًا تأكيد استخدام نفس حجم كتلة البيانات ووضع التشفير (ECB) في كلتا اللغتين.