56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.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功能的优点是在密文上使用相同的加密密钥,恢复纯文本;例如,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>
 |