开门见山

什么是0宽字符?

顾名思义,就是字节宽度为0的特殊字符。

比如:

你‏‏‍‎‏‍‌​‏‌‌‌‎‎‏好

看起来是一句简单的打招呼,实际上还有隐含信息。

我们把它复制到这里

Zero Width Lib

如下图所示:

我们可以看到,这句话还有隐藏的加密内容。

使用方法如下:

一探究竟

相信你们跟我一样,想知道它究竟是怎么一回事。

先看看下面这个靶场,和上面一样,这里面有隐藏内容,也就是0宽字符
靶场
打开F12看看

有一长串的字符编码,这就是0宽字符

它为什么不会显示在页面上呢?
首先,我们要知道这里面的‍是什么?

它叫零宽连字,全称是Zero Width Joiner,简称:ZWJ,是一个不打印字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果。零宽连字符的Unicode码位是U+200D (HTML: ‍ ‍)。

怎么实现的?
首先,输入需要被加密的内容将被转换为其二进制形式,然后该二进制将被转换为一系列表示每个二进制数字的零宽度字符。然后可以将零宽度的字符串不可见地插入正常文本中。如果将文本粘贴在其他地方,则可以提取零宽度的字符串,然后反向进行操作以找出被加密的内容!

具体加密过程
1.将需加密的内容转换为二进制
只是将每个字符转换为其等效的二进制

const zeroPad = num => ‘00000000’.slice(String(num).length) + num; const textToBinary = username => (username.split('').map(char =>zeroPad(char.charCodeAt(0).toString(2))).join(' ')
);

2.将二进制转换为0宽字符
它将遍历二进制字符串,并将每个1转换为0宽度空间,将每个0转换为零宽非连接符。转换字母后,我们将插入0宽连接符,然后再下一个。

const binaryToZeroWidth = binary => (binary.split('').map((binaryNum) => {const num = parseInt(binaryNum, 10);if (num === 1) {return '​'; // zero-width space} else if (num === 0) {return '‌'; // zero-width non-joiner}return '‍'; // zero-width joiner}).join('') // zero-width no-break space
);

3.插入正常文本中

需要注意的是加密与解密所使用的字典必须一致,也就是说,在哪儿进行加密的,就要在哪儿解密。

解密过程就是加密过程的反逻辑

有啥作用

很明显,可以用于文本加密、文章水印等。

hbuilder怎么没法插入字符了_一个你所不知道的加密方式--零宽字符加密相关推荐

  1. 一个你所不知道的暗黑游戏圈

    私服.侵权.大公司的战略转型这些内容只是游戏圈的表面,与暗黑游戏圈相比这些内容简直弱爆了,在暗黑游戏圈里,洗钱.血腥追杀创业者等事件层出不穷,这里充满着丛林法则,但是却从来无人揭示这个圈子. 近期,我 ...

  2. 深度报道 一个你所不知道的史玉柱

    他突然走了进来,没有任何征兆,绕过横在我面前的椅子,摘下墨镜,冲着我笑.他伸出右手要同我握手,因为他比我高了将近十厘米,这样做时他要谦卑地低头弯腰. 他脸上满是笑容,坐下时马上掏出KENT香烟,摆在会 ...

  3. javplayer 使用教程_视频教程 | 你所不知道的示波器使用技巧

    EEWorld 电子资讯 犀利解读 技术干货 每日更新 示波器作为工程师几乎天天使用的得力工具,其重要性毋庸置疑.尤其随着新器件应用,新技术的发展,新标准的推出工程师面临着更加复杂的信号设计及验证的要 ...

  4. 统计不同字符个数。用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数

    统计不同字符个数.用户从键盘输入一行字符,编写一个程序,统计并输出其中英文字符.数字.空格和其他字符的个数 s = input("请输入一行字符:") letter = 0 #字母 ...

  5. android零宽空格,零宽字符文本水印原理

    最近看到word-wrap源码里面有一个正则,有点迷惑:if (options.cut !== true) { regexString += '([\\s\u200B]+|$)|[^\\s\u200B ...

  6. 零宽字符隐写——2021网刃杯CTF 签到

    0x01 零宽字符 零宽度字符是一些不可见的,不可打印的字符.它们存在于页面中主要用于调整字符的显示格式,下面就是一些常见的零宽度字符及它们的unicode码和原本用途: 零宽度空格符 (zero-w ...

  7. ai的弹窗点了都不响应_【评价集合】拼多多评价,你所不知道的点都在这里!...

    对于在拼多多开店的商家们来说,评价是消费者对于商品的好坏程度的一个评分,评价的高低不仅仅会影响到商品的销量,更会影响转化率以及权重!所以为了店铺商品的长远发展打算!各位商家在求取出评.好评的道路上不断 ...

  8. python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路

    原标题:你所不知道的Python|函数参数的演进之路 函数参数处理机制是Python中一个非常重要的知识点,随着Python的演进,参数处理机制的灵活性和丰富性也在不断增加,使得我们不仅可以写出简化的 ...

  9. 主角是李逍遥的Java游戏_经典单机游戏仙剑奇侠传一20周年,你所不知道的隐藏剧情...

    原标题:经典单机游戏仙剑奇侠传一20周年,你所不知道的隐藏剧情 要说起经典的RPG游戏那可是当属仙剑莫属了,当年用着老式机和一众小伙伴在一起偷着玩的时光,大家还记得吗.这款游戏可算是开创了一个时代,具 ...

最新文章

  1. 如何有效抵抗电脑辐射
  2. 克莱门特公司在俄罗斯一个数据中心安装其新型冷却系统
  3. Java多线程:Semaphore
  4. 成为一名优秀的程序员基本要素
  5. C++并发编程实战---阅读笔记
  6. android studio读写txt,Android Studio从.txt文件读取/写入,保存路径?
  7. Eve-NG-Toolkit
  8. 开源流媒体系统:OBS ( Open Broadcaster Software ) 介绍
  9. 凸优化第四章凸优化问题 4.1 优化问题
  10. 三菱plc编程软件gx+developer安装教程
  11. 智能优化算法课程设计
  12. OpenCV实践之GMS网格运动统计策略的特征匹配算法
  13. 【笔记分享】Android TV 红外蓝牙遥控器添加
  14. 聆听音乐-推荐好听的歌曲
  15. 矩阵论笔记(七)——矩阵的微分和积分
  16. 为什么软件测试人员都不通过QQ、微信、邮件上报Bug?
  17. 网络安全——数据库基础知识
  18. Ubuntu18.04耳机无声音解决方法
  19. windows做时间服务器,linux和windows时间同步
  20. 还是关于pdflatex生成的文件复制粘贴出现乱码问题

热门文章

  1. 对于Activity的理解
  2. 报表设计器条形码支持类型
  3. 在数据库‘master’中拒绝CREATE DATABASE权限 的问题
  4. android搭建开发环境
  5. DELL台式机BIOS常见问题
  6. Struts国际化步骤
  7. 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)...
  8. php class类的用法详细总结
  9. 对RESTful Web API的理解与设计思路
  10. 四种利用C#播放声音的方法