隐写术:如何正确保护文章的版权?

2024-05-15 12:50

本文主要是介绍隐写术:如何正确保护文章的版权?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

阅读本文大概需要 3 分钟。

首先,我们来看一段文字:

一我日是一青技南是我一是个青每南天我更是新青的南栏我目是,青希南望我做是到青在南每我天是几青分南钟我让是你青获南得我提是高青。南

看完以后,你有什么想法?你会不会觉得我是自恋狂?神经病?复读机?脸滚键盘?

很好,那么再看下面这一句话:

一‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌日‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌一‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍技‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌是‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌一‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌个‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍每‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌天‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌更‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌新‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍的‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌栏‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌目‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌,‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍希‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌望‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌做‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌到‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍在‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌每‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌天‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌几‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍分‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌钟‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌让‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌你‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍获‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌得‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌提‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌高‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍。‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌

是不是正常多了?

但是如果我说这两段话,实际上是一样的,你信不信?

现在有4个中文汉字:我是青南,首先介绍Python的ord函数,它可以查询Unicode字符对应的Unicode码

>>> ord('我')
25105
>>> ord('是')
26159
>>> ord('青')
38738
>>> ord('南')
21335

接下来,介绍另一个函数chr。它的作用是把Unicode编码转换为Unicode字符。

例如:

>>> chr(21335)
'南'
>>> chr(38738)
'青'

最后,介绍bin函数,它可以把十进制数字转换为二进制数字:

>>> bin(6)
'0b110'
>>> bin(57)
'0b111001'

以上就是本文涉及到的全部知识。下面,开始转换。

由于Unicode是十进制数字,那么就能进一步转换为二进制数字:

>>> bin(25105)
'0b110001000010001'

把前面的0b去掉:

>>> bin(25105)[2:]
'110001000010001'

那么,我是青南转换为二进制以后,分别为:

>>> for char in '我是青南':
...  print(char, bin(ord(char))[2:])
...
我 110001000010001
是 110011000101111
青 1001011101010010
南 101001101010111

那么原来那个看起来很混乱的句子是怎么生成的呢?

from itertools import cyclesignature = '我是青南'
text = '一日一技是一个每天更新的栏目,希望做到在每天几分钟让你获得提高。'
complex_text = ''
for word, sig in zip(text, cycle(signature)):complex_text = complex_text + word + sig
print(complex_text)

运行效果如下图所示:

那么如果把我是青南先转换为他们对应的二进制字符串,然后再穿插到原文中,效果就会变成这样:

from itertools import cyclesignature_bin_list = ['110001000010001','110011000101111','1001011101010010','101001101010111']
text = '一日一技是一个每天更新的栏目,希望做到在每天几分钟让你获得提高。'
complex_text = ''
for word, sig in zip(text, cycle(signature_bin_list)):complex_text = complex_text + word + sig
print(complex_text)

运行效果如下:

到目前为止,你肯定不知道我在干什么。

下面,我将会介绍两个神奇的数字:

8204
8205

如果我使用chr把这两个数字转换为Unicode字符会怎么样?

我们来试一试:

很奇怪对吧?什么东西都没有?难道这两个数字转换为Unicode字符以后,都是空格??

没事,我们把字符串形式的二进制数字中的1替换为chr(8204),把0替换为chr(8025)

from itertools import cyclesignature_bin_list = ['110001000010001','110011000101111','1001011101010010','101001101010111']
text = '一日一技是一个每天更新的栏目,希望做到在每天几分钟让你获得提高。'
complex_text = ''
for word, sig in zip(text, cycle(signature_bin_list)):complex_text = complex_text + word + sig.replace('1', chr(8204)).replace('0', chr(8205))
print(complex_text)

运行效果是什么样的?请看下面这张图:

奇奇怪怪的符号没有了,一切都变得干干净净,就像下面这样:

一‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌日‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌一‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍技‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌是‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌一‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌个‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍每‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌天‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌更‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌新‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍的‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌栏‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌目‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌,‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍希‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌望‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌做‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌到‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍在‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌每‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌天‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌几‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍分‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌钟‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌让‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌你‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍获‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌得‌‌‍‍‍‌‍‍‍‍‌‍‍‍‌提‌‌‍‍‌‌‍‍‍‌‍‌‌‌‌高‌‍‍‌‍‌‌‌‍‌‍‌‍‍‌‍。‌‍‌‍‍‌‌‍‌‍‌‍‌‌‌

现在,你在电脑上把这一段话复制下来,存到记事本里面,效果如下图所示:

看起来很正常对吧。那么现在,用vim把它打开,你看到的将会是这样的:

在网页上面,一切都正常,但是一旦有人复制了你的内容,直接转载到了它自己的网站上。那么你可以到法院去起诉他了,因为这些没有宽度的符号,就是证据。

推荐阅读

1

你真的会用 PyCharm 吗?推荐 14 个亲测好用的 PyCharm 插件

2

火了!这款免费开源的终端资源监控器是真的牛逼...

3

年会,用 Python 做了个 “抽奖程序”,boss 奖励我一个红包!

4

再见 Win10!下一代操作系统要来了!

好文和朋友一起看~

这篇关于隐写术:如何正确保护文章的版权?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991875

相关文章

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

如何保护自己的个人隐私

个人隐私保护概览 在数字时代,个人隐私保护显得尤为重要。随着信息技术的发展,个人信息的收集、存储、使用变得更加便捷,同时也带来了隐私泄露的风险。为了保护个人隐私,我们需要从多个维度出发,采取一系列措施来确保个人信息的安全。 个人隐私泄露风险 个人隐私泄露主要来源于以下几个方面: 社交网络:在社交平台上分享信息时,如果不恰当地设置了隐私权限,可能会导致敏感信息被公开。网络服务:在使用网络服务

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

【电子通识】半导体工艺——保护晶圆表面的氧化工艺

在文章【电子通识】半导体工艺——晶圆制造中我们讲到晶圆的一些基础术语和晶圆制造主要步骤:制造锭(Ingot)、锭切割(Wafer Slicing)、晶圆表面抛光(Lapping&Polishing)。         那么其实当晶圆暴露在大气中或化学物质中的氧气时就会形成氧化膜。这与铁(Fe)暴露在大气时会氧化生锈是一样的道理。 氧化膜的作用         在半导体晶圆

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRITICAL( )2.2 taskENTER_CRITICAL_FROM_ISR( )

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

【Linux】萌新看过来!一篇文章带你走进Linux世界

🚀个人主页:奋斗的小羊 🚀所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、初识Linux💥1.1 什么是操作系统?💥1.2 各种操作系统对比💥1.3 现代Linux应用💥1.4 Linux常用版本 💥2、Linux 和 Windows 目录结构对比💥2.1 文件系统组织方式💥2.2

多线程的系列文章

Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1)   Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多线程学习(四)等待/通知(wait/notify)机制 Java多线程学习(五)线程间通信知识点补充 Java多线程学习(六)Lock锁的使用 Java多

缓存的常见问题 以及解决博客文章

1.jedispool 连 redis 高并发卡死  (子非鱼yy) https://blog.csdn.net/ztx114/article/details/78291734 2. Redis安装及主从配置 https://blog.csdn.net/ztx114/article/details/78320193 3.Spring中使用RedisTemplate操作Redis(sprin