JS加密/解密之逻辑运算符加密进阶篇

在这里插入图片描述

前言

​ 前篇给大家介绍了运算符不为人知的基础知识。他们的各种表达形式,今天我们从这个基础上,继续进一步告诉大家,如何对字符串进行加密处理。还是那句话,技术人不废话,直接晒代码。

示例源代码

// 字符串加密示例
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官网的功能。经测试该加密无法一键解开,安全性还是有的。

原理分析

  1. 字符串定义: 代码一开始定义了字符串"Hello World",我们将对其进行加密和解密操作。
  2. 加密操作:
    • 在加密部分,我们使用了一系列操作符来表示不同的字符:
      • [] + [] 会转换成"undefined"
      • ![] 会转换成false,加上[]后变成`“false”。
      • !![] 会转换成true,加上[]后变成`“true”。
      • +[] 会转换成数字0,加上[]后变成`“0”。
      • -[] 会转换成数字-0,加上[]后变成`“0”。
      • ~[] 会转换成数字-1,加上[]后变成`“-1”。
    • 这些操作符产生的结果被存储在数组中,然后使用join函数连接成一个字符串,形成了加密后的字符串"[object Object]undefinedtrue0-0-1"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值