56 lines
3.0 KiB
Markdown
56 lines
3.0 KiB
Markdown
---
|
|
id: 5900f3a81000cf542c50feba
|
|
challengeType: 5
|
|
title: 'Problem 59: XOR decryption'
|
|
videoUrl: ''
|
|
localeTitle: 'المشكلة 59: فك XOR'
|
|
---
|
|
|
|
## Description
|
|
<section id="description"> يتم تعيين رمز فريد لكل حرف على جهاز الكمبيوتر ويكون المعيار المفضل هو ASCII (الرمز القياسي الأمريكي لتبادل المعلومات). على سبيل المثال ، الأحرف الكبيرة A = 65 ، العلامة النجمية (*) = 42 ، والأحرف الصغيرة k = 107. طريقة التشفير الحديثة هي أخذ ملف نصي ، تحويل البايت إلى ASCII ، ثم XOR كل بايت مع قيمة معينة ، مأخوذة من مفتاح سر. الميزة مع الدالة XOR هي أن استخدام نفس مفتاح التشفير على النص المشفر ، يستعيد النص العادي ؛ على سبيل المثال ، 65 XOR 42 = 107 ، ثم 107 XOR 42 = 65. بالنسبة للتشفير غير القابل للكسر ، يكون المفتاح هو نفس طول رسالة النص العادي ، ويتكون المفتاح من وحدات البايت العشوائية. سيحتفظ المستخدم بالرسالة المشفرة ومفتاح التشفير في مواقع مختلفة ، وبدون كلا "نصفين" ، من المستحيل فك تشفير الرسالة. للأسف ، هذه الطريقة غير عملية لمعظم المستخدمين ، لذا فإن الطريقة المعدلة هي استخدام كلمة مرور كمفتاح. إذا كانت كلمة المرور أقصر من الرسالة ، وهو الأمر المحتمل ، فإن المفتاح يتكرر دوريًا في جميع أنحاء الرسالة. يستخدم رصيد هذه الطريقة مفتاح كلمة مرور طويل بما فيه الكفاية للأمان ، ولكنه قصير بما يكفي ليكون قابلاً للتذكر. لقد أصبحت مهمتك سهلة ، حيث أن مفتاح التشفير يتكون من ثلاثة أحرف أقل. باستخدام cipher.txt (النقر بزر الماوس الأيمن و "حفظ الرابط / الهدف باسم ...") ، والملف الذي يحتوي على رموز ASCII المشفرة ، ومعرفة أن النص العادي يجب أن يحتوي على كلمات إنجليزية شائعة ، قم بفك تشفير الرسالة والعثور على مجموع قيم ASCII في النص الأصلي. </section>
|
|
|
|
## Instructions
|
|
<section id="instructions">
|
|
</section>
|
|
|
|
## Tests
|
|
<section id='tests'>
|
|
|
|
```yml
|
|
tests:
|
|
- text: يجب أن يقوم <code>euler59()</code> بإرجاع 107359.
|
|
testString: 'assert.strictEqual(euler59(), 107359, "<code>euler59()</code> should return 107359.");'
|
|
|
|
```
|
|
|
|
</section>
|
|
|
|
## Challenge Seed
|
|
<section id='challengeSeed'>
|
|
|
|
<div id='js-seed'>
|
|
|
|
```js
|
|
function euler59() {
|
|
// Good luck!
|
|
return true;
|
|
}
|
|
|
|
euler59();
|
|
|
|
```
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</section>
|
|
|
|
## Solution
|
|
<section id='solution'>
|
|
|
|
```js
|
|
// solution required
|
|
```
|
|
</section>
|