西西河

主题:【原创】说些关于中国密码的事吧 -- ragtime

共:💬28 🌺29
分页树展主题 · 全看首页 上页
/ 2
下页 末页
  • 家园 【原创】说些关于中国密码的事吧

    既然一坛子人都被1001提起了兴趣,相信很多人一定不过瘾,觉得没有多少关于中国的事。那我就顺风说说中国的密码。由于当然的原因,只谈到抗战结束时的情况为止。

    其实中国有比较系统的密码通讯,是比较晚的事。以前最多也就是玩玩藏头诗,或者象武经总要里说的简单替代。清朝时候有过一件皇族使用密码联络谋反的事,不过用的还是葡萄牙语密码。古代中国的秘密通讯,主要靠密使吞下蜡丸或用口信等形式传送。另外各种密写办法也挺流行。也就是说,采用的是保护通讯途径的办法,不是加密讯息。这也是不得已而为之,一来中文常用字就有几千,编码是一项巨大工程。二来虽然中国文字出现很早,但是一直以来大多数普通中国人却是文盲,纠纠武夫中,能识字的更是不多。中国使用系统的密码通讯,大致是上世纪初军阀混战期间。张作霖系和国民党系军队都开始比较有系统的对电文采用加密。

    对中国密码最有研究的应该是日本。一来因为日本人熟悉汉字,二来因为中日之间长期的利益关系和冲突。另外,就象其他很多现代科技一样,中国的现代军事技术很大程度上是从日本学习借鉴而来的,更不要说很多参谋指挥人员本来就出身于日本军校。这其中就有军事密码方面的人员。所以有美方资料引述日本战俘的口供,说中国密码是最容易被日方破译的,因为它跟日本密码非常相像。有趣的是国民党空军的密码较少被日方破译,延安的密电破译起来也比较困难。

    日本在1921年成立了专门负责破译中英苏电文的机构。根据日方的资料,在918后的一段时间,日本曾成功破译张学良的不少电文。在77前,日方也从破译的电文中对宋哲元和蒋介石在华北的力量构成有了相当的了解。抗战开始后,由于日方增加了电侦力量和中方通讯量的增加,使得一度截获的国民党军队和外交电文破译率达到80%。1940年国民党换码,可是日方破译率在一度下降后很快又恢复到75%左右。到41年2月,连八路军的密电也有相当一部分被日军破译。当然日军破译能力还是相当强的,甚至连美军在远东的密电也被破译了不少,其中美国人承认了的就至少包括其空军气象电文。

    国民党方面对日电侦主要由军统负责,不过在与美方合作之前并没有比较系统的组织和行动。另外有的战区也有些零散行动,不过主要针对小范围使用的战术密码。

    美方也破译国民党密码。因为破译截获的国民党密电发现其中有不少涉及美军动态,还有因为美方觉得国民党密码太容易被破译,美国军方有不少人反对与军统在电侦领域合作。其理由就是合作共享的信息很可能会被日方通过间谍或者破译国民党密电而截获,进而让日方以更换密码或其他的方式最终影响美方利益。而戴笠方面则总是怪美国人不肯把日军密码解密秘诀传授给军统,没有合作诚意。美方又反过来怪军统的人不理解解密分析实际上需要大量人力物力时间投入的苦活,没有所谓魔术或者神仙办法可以一看到密文就翻成明文。美蒋在电侦方面的合作,尽管代号“友谊”,就在这种互不信任的情绪下进行的。最后的结果基本是美方得以设立数个合作监听站,但是破译的工作主要还是由美方完成。国民党得到部分破译后的情报。另外美军为军统培训一些侦听和破译方面的中国技术人员,中方破译工作多由这些人员独立进行,在其破译工作中没有得到多少美方帮助。

    最近英国政府通讯总部公开的文件披露了其对苏的电侦行动,其中叫ISCOT部分的电文是其破译的43到45年间莫斯科与各共产国际分部(包括中国)间的联络。解密的电文中有中共向莫斯科要求药品等物资的,甚至有毛岸英上苏德前线前给毛泽东的电文。

    中文的加密可以看成一个两步的过程。第一步是编码,第二步是加密。中文不像拼音文字有一个很小的字目表,可以象莫尔斯码一样给每个字直接定义一个点划组合,----没多少人能记住几千个十来位的点划组合。所以第一步是使用一个不大的字母表,把方块字变成使用该字母表的码字。因为这一步涉及几千个字,编码方法要简单易记。一般常用的是用拼音,四角号码/中文电报码等等。现在的各种中文键盘输入法其实也是这回事。第二步在这个基础之上可以进一步采用各种西方的古典加密算法。

    还有一个常用的办法就是用码本,给间谍一本码本或者指定一本书,加密就简单的用页,行,字号代替汉字,最多再进行简单转换。不过这个办法不适用于大规模军事通讯,因为换码比较麻烦而且不能很多人共用一本码本,所以多数是间谍之间的点对点联系时采用。

    元宝推荐:不爱吱声,

    本帖一共被 1 帖 引用 (帖内工具实现)
    • 家园 军阀混战期间,只要两方一勾搭上

      就要确定一份密码,好保持联系,互通声气.

      可惜很少看到有记录具体内容和方法的资料.

    • 家园 【文摘】反切语

      http://oeeee.com/gz/zsj/fs/t20060221_227162.html

      这应该算是真正结合中国语言特点的密码了吧

      • 家园 是的。这是一种口语广东话的简单替代码

        反切语里的字音和广东话里的字音还是有一一对应关系。

    • 家园 电视剧《暗算》可以参看
      • 家园 只看了一点第一部

        对类似题材作品整体性失望。鉴于这里是科技版,文学作品里的故事我想对这里不合适。

        这部电视剧只看了一点第一部,看不下去了。第一部其中背景的是电侦,并不是密码。第二部里的内容看了简介,跟enigma有关,感觉还是去看1001n兄的密码系列吧,那才是故事原版。

    • 家园 非也,非也

      我去山西平遥,大家都知道那是过去中国的苏黎世。在票号博物馆里就有那时候的银票,上面就有密码。是一串字,看不懂啥意思,但是票号内部的人可以从中看到信息,防止顾客涂改票额。据说十分高深,现在也没有破译。

      • 家园 据我对银票密语的了解

        那只是一种认证手段,用来证明票是哪里所出,客户是谁。不太清楚是否对金额也有认证。

        这个和系统的密码是两回事,更加象现代的hash function。

    • 家园 好贴重顶,我又来麻烦兄台了。

      最近得闲,作作MD5加密,最后一步输出攻不过去,求教兄台及各位方家。

      • 家园 愿闻其祥

        呵呵,真羡慕老兄悠闲,烂漫春光解码玩。

        • 家园 求救

          我找出的MD5算法有好多个“变种”,折腾了一个多礼拜,现在用语言实现“好像”没有问题了,头疼的是算法:

          1。 FF,GG,HH,II 这些函数的定义?

          是 (1) :见图(http://en.wikipedia.org/wiki/MD5)?

          即:temp := d

          d := c

          c := b

          b := ((a + f + k(i) + w(g)) leftrotate r(i)) + b

          a := temp

          还是 (2):

          a := b + ((a + f + k(i) + w(g)) leftrotate r(i)); 而 b,c,d 不变?

          2。 最后输出的是128位的值,是 A+B+C+D, 还是D+C+B+A?(“+”是简单相连吗?)

          多谢了!(20多个花了,也没有给你砸出通宝,只好猜老铁的算法了)

          • 求救
            家园 见内

            MD5是有公开的标准算法的,在IETF里面,文件代号RFC1321。那里面有代码你可以参考。其他变种很多只是这个的优化。那里面有对FF,GG,HH,II的定义。

            所以回到你的问题1,答案应该是(1)。请注意这里的g和f每16个循环变一次,所以这段程序分别对应FF(前16次循环),GG(次16此循环),HH(再次16次循环),II(最后16次循环)。

            最后结果是简单相连,顺序和输入时反过来DCBA。

            • 见内
              家园 多谢了先,匆匆回一下。。。

              我又细看了一下,除了http://en.wikipedia.org/wiki/MD5上给出的,其他所有的算法(包括RFC1321)都是(2),而且所有的代码也都是(2),还请ragtime兄再看一下。

              还有,我想我的程序是不是32位相加产生了进位才有错误?

              又得去糊口了。

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河