kingfergus吧 关注:21贴子:5,311

【研究】Fergus的密码学

只看楼主收藏回复

今天晚上无聊的发霉……把以前弄的东西拿出来捣鼓捣鼓……


IP属地:浙江来自Android客户端1楼2014-05-23 22:40回复
    貌似大学里面有个专业专门教这个唉…
    不过我肯定学不到那么深,也用不到那么多,随便编几个出来玩玩就可以了^ ^


    IP属地:浙江来自Android客户端3楼2014-05-23 22:42
    回复
      第一代密码:字母转换类密码


      IP属地:浙江来自Android客户端4楼2014-05-23 22:43
      回复
        这种初级密码在读小学的时候就见到过了,一般用于各种密友之间传达信息。
        最初级的版本是递推样式的,明文密文之间转换很简单,按照字母表向前或向后数几个字母即可。
        后来还有一些升级版本,明文密文之间转换关系无规则,有特定结构。但是这样的结构要求通信双方都熟背转换关系,很麻烦。
        我也编过类似的密码,为了方便起见我事先写了一段话,用不同的26个字母打头的单词组成,取出每个单词的首字母排练成乱序的字母表,再和顺序的字母表一一对应即可得到转换关系。(编那一段话可是相当费脑筋的……)
        第一代密码的优点是使用方便,书写迅速,缺点是结构明显,容易被破解。特别是最初版本,是个人都能看出来@ @……


        IP属地:浙江来自Android客户端5楼2014-05-23 22:57
        收起回复
          第二代密码:混合转换密码


          IP属地:浙江来自Android客户端6楼2014-05-23 23:00
          回复
            第一代密码容易被破译最主要的原因是结构明显。不管是用拼音还是英语,一眼就知道每个空格之间的字符对应明文的一个单字。另外,拼音是不会出现七个以上的单字的,而英语中一句话中出现一个七字母以上单词的可能性比较大。所以简略判断就可以知道密文选择的语言类型。另外,通过一些高频词汇的使用也可以破译部分密文,如“我,你,的”等,基本每句话都会出现。还有就是猜想密文书写者的意图,根据此对语句进行分析,也能起到作用。
            而混合转换码抵消了这一劣势。句中空格,标点等用句首特定结构标示。一句话用密文书写后是句首字母数字搭配的字符串,实际信息则是很长的一段字母,用普通转换码书写。为了保密起见,句首的标示用另一种密码书写,以防空格的高频出现暴露部分对应关系。
            这样的密码既符合文法结构,又能传递较多的信息,是一种比较完备的密码。
            不足之处在于使用的复杂程度远高于第一代密码。


            IP属地:浙江来自Android客户端7楼2014-05-23 23:14
            回复
              比如……我的名字写出来是mi58zeptgvybabpt.


              IP属地:浙江来自Android客户端8楼2014-05-23 23:17
              回复
                第三代密码:“窗口”密码


                IP属地:浙江来自Android客户端9楼2014-05-23 23:18
                回复
                  这个不是我的首创,灵感源于小学的时候冒险小虎队的破译卡。
                  取一张硬纸板,随意裁下几个等大的口子,作为密文样板。另外裁基本等大的白纸作为明文样板。将纸板铺在白纸上,在裁下的口子中按照事先规划好的顺序写下信息,再拿开纸板,将空余部位填满无意义的文字。之后把明文密文样板一起送(最好分开送)给信息接受者就可以了。
                  这样写被破译的可能性基本就是零,只要别把密文样板弄丢就行。
                  缺点……可以传递的信息量非常有限,而且做明文样板的过程超级麻烦。一张10cm^10cm的纸板能裁出10个口子基本就是上限了,这样一段50个字的话就要做5个明文样板@ @


                  IP属地:浙江来自Android客户端10楼2014-05-23 23:30
                  回复
                    第四代密码:二进制机器码(实验中)


                    IP属地:浙江来自Android客户端11楼2014-05-23 23:30
                    回复
                      出于信息传递效率和保密程度考虑,二进制码都是最好的选择。
                      文法可行性原理:按5位数对应一个单字算,5位数有2^5=32种组合方式,那么除去26个字母以外,一个留给空格,其余5个给,。……?!五个基本标点,就可以完整地表达信息了。
                      考虑到保密性,可以在数串首加入识别序列,先输入50~100个非5的倍数且无意义的数字,再添加一个正常文本中不可能出现的标识单元,如表示“。,。”的编码。之后再输入需要传递的信息。


                      IP属地:浙江来自Android客户端12楼2014-05-23 23:43
                      收起回复
                        由于这样的书写方式会产生超长的数串,人工加密和解密都会非常麻烦,所以打算编一个程序完成相关内容。


                        IP属地:浙江来自Android客户端13楼2014-05-23 23:44
                        回复
                          以下是一个参考模版。
                          1、加密部分。
                          加密部分由三个模块组成。
                          识别模块,编译模块,输出模块。
                          识别模块用于读取明文信息,并输出明文信息的基本特征,如信息总量等。
                          之后明文及明文基本信息传递给编译模块,此时编译模块按照既定转换关系将明文转换为二进制码,同时输出模块开始工作,随机生成保密单元和标识单元后,加上转换后的明文,即得到密文。
                          2、解密部分
                          解密部分和加密部分类似。
                          先读取密文,识别出标识单元后,再翻译出其余信息,输出。


                          IP属地:浙江来自Android客户端14楼2014-05-23 23:53
                          回复
                            一些技术细节。
                            读取明文后,为了方便解密部分的编写,可以在标识单元后加入信息的基本特征单元。
                            暂时想到的有信息的信息量,用于加密和解密部分工作循环次数。
                            其余的考完试再具体想吧……
                            还有就是假期需要抽时间补补编程,以前学的那点Basic现在看来渣透了……还有很多东西需要学习啊,不过以后会有时间的。


                            IP属地:浙江来自Android客户端15楼2014-05-23 23:59
                            回复
                              我是个傻傻的跑来找Merida生日和楼主的关系的。。。。。。。 http://tieba.baidu.com/p/3148824394 就这玩意了。。。。。 看到这是生日贴以为寻找终结了呢。。。。。。。。我还是太年轻。。。Fergus私信告诉我好不好突然好好奇啊 刚看完BRAVE 最近好像有点迷上DISNEY的动画电影 都是FROZEN的错 学生党还是没时间看电影 一激动就说了好多 而且怎么还卖起萌来 请尽情鄙视我吧。。


                              IP属地:江西16楼2014-07-22 22:17
                              回复