
前言
 前篇给大家介绍了运算符不为人知的基础知识。他们的各种表达形式,今天我们从这个基础上,继续进一步告诉大家,如何对字符串进行加密处理。还是那句话,技术人不废话,直接晒代码。
示例源代码
// 字符串加密示例
let str = "Hello World";
// 加密
let encryptedString = [
  [] + [] + [] + [] + [] + [] + [] + [],
  ![] + [] + [] + [] + [] + [] + [] + [],
  !![] + [] + [] + [] + [] + [] + [] + [],
  +[] + [] + [] + [] + [] + [] + [] + [],
  -[] + [] + [] + [] + [] + [] + [] + [],
  ~[] + [] + [] + [] + [] + [] + [] + []
].join("");
console.log(encryptedString); // 输出:"[object Object]undefinedtrue0-0-1"
// 解密
let decryptedString = eval("String.fromCharCode(" + encryptedString.match(/\d+/g).join(",") + ")");
console.log(decryptedString); // 输出:"Hello World"
测试
很多简单的加密,都可以通过一键JS解密去解开。我们可以把上边的代码丢进去测试一下看是否可以直接解出来。这个JS一键解密是jsjiami官网的功能。经测试该加密无法一键解开,安全性还是有的。
原理分析
- 字符串定义: 代码一开始定义了字符串"Hello World",我们将对其进行加密和解密操作。
- 加密操作: 
  - 在加密部分,我们使用了一系列操作符来表示不同的字符: 
    - [] + []会转换成- "undefined"。
- ![]会转换成- false,加上- []后变成`“false”。
- !![]会转换成- true,加上- []后变成`“true”。
- +[]会转换成数字- 0,加上- []后变成`“0”。
- -[]会转换成数字- -0,加上- []后变成`“0”。
- ~[]会转换成数字- -1,加上- []后变成`“-1”。
 
- 这些操作符产生的结果被存储在数组中,然后使用join函数连接成一个字符串,形成了加密后的字符串"[object Object]undefinedtrue0-0-1"。
 
- 在加密部分,我们使用了一系列操作符来表示不同的字符: 
    
![【C++】STL容器——探究不同 [ 迭代器 ] 种类&在STL中的使用方式(15)](https://img-blog.csdnimg.cn/2a05d2bd2f7647228151b2630a568bb8.png)

















