浅析JavaScript图片文字隐写术:什么是隐写术、隐写术与密码学区别、Unicode 中的不可见字符、StegCloak库实现隐写术
这篇文章主要记录及介绍一下前端实现隐写术及相关知识,具体内容不细节展开,因为感觉工作中实用性不强,就是知道有这个东西,可以实现这些东西,以后如果需要使用的话,再细细研究学习,不过真的感觉不错,会玩,哈哈。
主要推荐下面这篇文章:《通过文本与图片的隐写来隐藏信息(非常有意思!)》- https://mp.weixin.qq.com/s/xe2vq4kImWHRbSHV4Y5rUg
一、什么是隐写术
隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。
如果你是一个在敌对国家的间谍,那么仅向美国发送信息便是犯罪。如果消息是加密的,那可能导致更大的罪名,当你拒绝为当局解密消息时,情况会变得更糟。隐写术,字面意思是“隐藏的文字”,是指隐藏消息的存在。
Python Forensics 的创始人 Chet Hosmer 指出:
隐写术掩盖了信息的存在。不像它的表亲密码学一样容易检测,难以破解,隐写术提供最有趣的特点在于“藏在众目睽睽之下”。(Steganography hides the mere existence of the communication. Unlike its cousin cryptography, which is easy to detect but difficult to break, steganography provides the most interesting element of all ‘To Hide in Plain sight’.)
总结一下就是:密码学让人一看就有问题,隐写术就怎么看都没问题。
参考文章:《如何在字符串中隐藏秘密 —— JavaScript 中的现代文本隐藏》 - https://juejin.cn/post/6856737400396349454
二、Unicode 中的不可见字符
零宽度字符是非打印字符,是 Unicode 表的一部分。顾名思义,他们甚至不展示自己的存在。它们用于使长句换行,连接表情符号,将两个字符连接起来,防止它们结合等。
三、StegCloak 是什么以及如何工作
《StegCloak:如何使用密码在纯文本中安全隐藏不可见的机密字符》 - https://www.freebuf.com/articles/database/240155.html
StegCloak是一款基于纯 JavaScript 开发的隐写功能模块,该工具采用函数式编程风格设计,StegCloak 可以对文本中的机密信息进行压缩和加密,然后再使用特殊的 Unicode 不可见字符来隐藏它。除此之外, 该工具还可以用来安全设置水印字符串,在网页中设置不可见的脚本,或在社交媒体或其他需要涉及隐蔽通信的地方隐藏文本内容。
github 地址:https://github.com/KuroLabs/stegcloak,目前 2.3K star,功能介绍
1、使用密码和HMAC完整性保护您的不可见的机密数据;
2、通过使用AES-256-CTR加密不可见的机密数据来实现加密安全;
3、在Unicode字符中使用了7个不可见的字符,这些字符在网页中无处不在;
4、支持最常见的Tweets、Gmail、Whatsapp、Telegram、Instagram、Facebook等社交媒体或网络应用;
5、减少Payload的最大压缩(LZ,Huffman);
6、完全不可见,使用零宽度字符而不是空格或制表符;
7、速度非常快!可以在不到一秒钟的时间内,通过将隐写术在三个单词隐藏在****页面源(800行,205362个字符)的隐蔽文本中;
8、支持将文件上传到云端并在字符串中创建链接,可以实现在字符串中隐藏文件;
9、纯功能性开发;
10、可将其当作API模块、命令行接口或Web接口来使用;
其他相关文章推荐:
《神秘的JS字符串隐写术》- https://juejin.cn/post/6867319399947681806