我对如何对中文进行简单的加密感到很好奇。
在这里看到了一个与加密/中文有关的类似问题:关于字符语言的加密,但是加密方法似乎很复杂。
如果我没记错的话,上面答案中描述的方法需要类似于将某些字符预先映射到其他字符的表的内容;或使用一次性垫之类的东西-两者都需要双方之间事先进行大量交流。
我想知道是否有更简单的东西,我想的是类似“替换密码”的东西。也就是说,一种轻松编码消息的方法,并且还允许在给定分析或使用解码技术/知识的情况下轻松解码消息(如果知道密钥)或破解消息。
例如,英语消息加密的方法有很多-一些常见/简单的示例,例如ROT13,Vigenere。
但是,我似乎看不出单词“拆开”的概念如何适用于汉字。
例如,我可以(很容易)使用Vignere(键:巧克力)对以下内容进行编码,但是我该怎么用中文进行编码?

我正在学习中文-> K ha nslrgmpn Qjwyeli
我在学中文->?


#1 楼

我要问的问题是,在历史上和现代时代,人们如何使用中文来构造纸笔密码。

如问题中所指出,中文是一种对数语言因此,其字符数比语音系统大得多。从历史上看,这导致中文代码不能基于脚本。

以下主张摘自一个论坛讨论并翻译了古汉语代码,原因是缺少更好的来源。


Nüshu脚本可能并非旨在用于机密,但它之所以如此,是因为它几乎是受过良好教育的中国女性专用和可读的。它是语音的,有700个字符。这表明人们可以使用中文的语音属性作为减少字符集的基础,在此基础上可以实现代码。

在较早的秘密共享形式中,消息被切成条带并由不同的快递员传递。


所谓的“阴书”是指垂直记录文档,并将其切成3部分。发送了3个人,每个人将持有其中一个部分。他们将在不同的时间和使用不同的路径出发。接收者收到全部三部分后,就可以得到这份秘密文件的全部内容。如果使者之一被敌人俘虏,则敌人将很难理解机密文件。正如中国历史论坛翻译的那样,短语技术是我不完全了解的东西,我认为该方法本质上是使用密文逻辑字符中的语音传送秘密讯息。用英文“视线帽,八个沿海地区创造了老鼠桌”或“我拥有se-cre-re-t”


“反切”(fan3 qie4)是起源于古代的一种语音系统,用于帮助记录中文的发音。 (fan3 qie4)的基本方法是:将第一个单词上单词(shang4 zi4-高位单词)用作其起始声音(或辅音),将第二个单词(xia4 zi –下位单词)用作其结束声音(或元音)。音调将跟随结束音。因此,一个单词分为两个部分:声母(声母-起始音)和韵母(云母-结束音)。使用声母声母在另一个字词上加上韵母韵母,形成“反切”范切的第一个字(或大写字母)。用另一个单词的声母声母加上这个词的韵母韵母,形成“反切”范切的第二个单词(或低位单词)。使用较低的单词的语调作为单词的语调。第一个单词的开始声音和第二个单词的结束声音是原始单词的发音。正如中国历史论坛翻译的那样,使用了代码棒,其中每个棒的长度代表消息中预先同意的特定内容。这些棒的长度可以使用信号发射来传输,而无需实际发送棒。一般而言,此技术等效于古代汉语也使用的代码书。


例如,一英寸的棍棒表示胜利。 9英寸长的棍棒表示军队已击碎敌军并俘虏了敌将。 8英寸的棍棒表示敌人的城市(城市)已投降。 7英寸长的棍棒表示成功抵抗了敌人的军队,而敌人的军队消失了。 6英寸长的棍棒意味着军队应保持警惕并勤奋捍卫该地。正如中国历史论坛翻译的那样,格栅密码经常被认为是中文优秀的笔和纸密码。
尽管我找不到任何历史参考,但换位密码似乎与中文完全兼容。尽管人们必须谨慎选择单词,因为随着整个单词而不是字母的移位,某些含义会泄漏出去。
一种类似于rot16的汉字加密方法是用不同颜色的墨水在彼此的上方书写不同的字符。键将说明每个位置的哪种颜色是正确的字符。例如,密钥可以是“蓝色-红色-红色-黑色-绿色-蓝色”。这种方案的有趣特征之一是,可以设计密文,以使所有可能的密钥都编码一个看似有效且可读的消息。该方案的一个优点还在于,它可以防止色盲对手。


#2 楼

似乎我无法对答案发表评论,因为该问题已不再存在于中文问答中,但我想支持弗格里乌的建议。某些Web服务并不十分注重安全性,但是它们希望避免包含被中文防火墙阻止的关键字。我熟悉的一个是PIMCloud,它是一种受云支持的IME,它确实执行了fgrieu的建议-将字符还原为其unicode代码点的十六进制版本,然后对这些字符执行类似rot13的替换。

显然,没有计算机就很难做到这一点,但是如果您有一个unicode代码点表,这并非没有可能(我知道您拒绝了“大替代表”的想法,但这是基于需要大量交流而不是使用对于双方来说都很容易掌握的东西)

要使用您的示例,首先将我在學中文更改为E68891E59CA8E5ADB8E4B8ADE69687

然后将其使用以下方式加密为6E00196D14206D25306C30256E1E0F rot13的十六进制版本(rot8?)

要对其进行解码,请再次rot8返回E68891E59CA8E5ADB8E4B8ADE69687,然后转换回unicode *。只要关键字也是十六进制的,例如,也可以使用Vigenere密码。 E5B7A7E5858BE58A9B代替chocolate

*“ unicode” *是指UTF8。

评论


$ \ begingroup $
中国计算机用户使用标准键盘。他们通过键入拉丁字母(此系统称为en.wikipedia.org/wiki/Hanyu_pinyin)来构造字符,此过程是可逆的。 (1)。使用汉语拼音系统,用拉丁字母书写中国人的情感(2)。应用rot13 / vigenere,(3)。输入结果。它应该与您的系统相似,但是对于用户来说更容易,因为它不需要执行UTF8表查找。
$ \ endgroup $
– Ethan Heilman
2012年2月1日14:41



$ \ begingroup $
效果不是很好-拼音实际上是不可逆的,因为多个字符共享同一拼音-例如,十(ten)的发音与石(stone)相同。如果您忽略音调,那就更糟了。在大多数情况下,可以弄清楚使用了错误的字符,但这并不是没有损失的。
$ \ endgroup $
–铁霜
2012年2月6日在2:46

$ \ begingroup $
+1非常有趣/不错。我只是假设这样的映射是可逆的。我知道这违背了练习的目的,但是将单词翻译成拼音字母(例如英语)然后使用rot13呢?十几岁的时候,我和我的一些朋友使用在线翻译引擎(例如babel-fish)作为一种代码形式。
$ \ endgroup $
– Ethan Heilman
2012年2月6日在5:02



$ \ begingroup $
是的,不幸的是拼音不是1-1映射。另外,在一些讲汉语的国家,他们不学习拼音,而是学习注音(en.wikipedia.org/wiki/Zhuyin)。但与拼音相同的问题-它不是1-1映射。
$ \ endgroup $
– pyko
2012年2月6日在22:46

#3 楼

如果保存当前页面并使用十六进制编辑器检查文件,则可能会发现示例中文字符串由字节


E6 88 91 E5 9C A8 E5 AD B8表示。 E4 B8 AD E6 96 87非常适合由机器实现的一个选项是以该机器使用的这种(或其他)格式对表示消息的字节进行加密。这对于现代的强密码将是很好的,但是对于像Vigenere这样的弱密码来说却是非常差的。而且对于手工密码非常不合适。

#4 楼

您可以将所有这些中国表意文字拆分为基数,然后进行加密。