zoukankan      html  css  js  c++  java
  • 维吉尼亚密码破译

    维吉尼亚密码以破译复杂、工作烦琐而闻名,令众多破译者望而却步。但是破译的方法还是有的,由于工作量较大,所以一般借助一些破解工具。
    由于不是一次一密乱码本作为的密钥,所以密钥的长度都是有限的,所以当密文越长时,我们破解出密码的可能性就越大。


    破解方法以下题为例:
    cgrpfrvanxsnycznbjqana

    首先假设密钥的长度,我们从2开始(如果密钥长度是1的话,维吉尼亚密码就变成了恺撒密码了)。

    假设密钥长为2。

    以两个字母为一组加上空格:cg rp fr va nx sn yc zn bj qa na
    再进行恺撒全排:
    A     cg rp fr va nx sn yc zn bj qa na
    Z     dh sq gs wb oy to zd ao ck rb ob
    Y     ei tr ht xc pz up ae bp dl sc pc
    X     fj us iu yd qa vq bf cq em td qd
    W     gk vt jv ze rb wr cg dr fn ue re
    V     hl wu kw af sc xs dh es go vf sf
    U     im xv lx bg td yt ei ft hp wg tg
    T     jn yw my ch ue zu fj gu iq xh uh
    S     ko zx nz di vf av gk hv jr yi vi
    R     lp ay oa ej wg bw hl iw ks zj wj
    Q     mq bz pb fk xh cx im jx lt ak xk
    P     nr ca qc gl yi dy jn ky mu bl yl
    O     os db rd hm zj ez ko lz nv cm zm
    N     pt ec se in ak fa lp ma ow dn an
    M     qu fd tf jo bl gb mq nb px eo bo
    L     rv ge ug kp cm hc nr oc qy fp cp
    K     sw hf vh lq dn id os pd rz gq dq
    J     tx ig wi mr eo je pt qe sa hr er
    I     uy jh xj ns fp kf qu rf tb is fs
    H     vz ki yk ot gq lg rv sg uc jt gt
    G     wa lj zl pu hr mh sw th vd ku hu
    F     xb mk am qv is ni tx ui we lv iv
    E     yc nl bn rw jt oj uy vj xf mw jw
    D     zd om co sx ku pk vz wk yg nx kx
    C     ae pn dp ty lv ql wa xl zh oy ly
    B     bf qo eq uz mw rm xb ym ai pz mz

    首先看A行:cg rp fr va nx sn yc zn bj qa na
    当密钥第一个字母为A的时候,密码中出现了v、z、q等多个低频率的字母,所以密钥的第一个字母不是Z;
    当密钥第二个字母为A的时候,密码中出现了x、c、j等多个低频率的字母,所以密钥的第二个字母也不是Z。

    再看Z行:dh sq gs wb oy to zd ao ck rb ob
    同理可知密钥的第一、二个字母都不是Z。

    以此类推,可以发现:只有密钥的第一个字母为M时才基本符合标准频率,而第二个字母为O或M时才基本符合标准频率。

    然后将两组组合一下:
    当密钥为MO时,密码无意义,舍;
    当密钥为MM时,密码无意义,舍。
    至此可以判断出,密钥的长度不是2。



    同样的道理,我们假设密钥长为3。

    以两个字母为一组加上空格:cgr pfr van xsn ycz nbj qan a
    再进行恺撒全排:
    A     cgr pfr van xsn ycz nbj qan a
    Z     dhs qgs wbo yto zda ock rbo b
    Y     eit rht xcp zup aeb pdl scp c
    X     fju siu ydq avq bfc qem tdq d
    W     gkv tjv zer bwr cgd rfn uer e
    V     hlw ukw afs cxs dhe sgo vfs f
    U     imx vlx bgt dyt eif thp wgt g
    T     jny wmy chu ezu fjg uiq xhu h
    S     koz xnz div fav gkh vjr yiv i
    R     lpa yoa ejw gbw hli wks zjw j
    Q     mqb zpb fkx hcx imj xlt akx k
    P     nrc aqc gly idy jnk ymu bly l
    O     osd brd hmz jez kol znv cmz m
    N     pte cse ina kfa lpm aow dna n
    M     quf dtf job lgb mqn bpx eob o
    L     rvg eug kpc mhc nro cqy fpc p
    K     swh fvh lqd nid osp drz gqd q
    J     txi gwi mre oje ptq esa hre r
    I     uyj hxj nsf pkf qur ftb isf s
    H     vzk iyk otg qlg rvs guc jtg t
    G     wal jzl puh rmh swt hvd kuh u
    F     xbm kam qvi sni txu iwe lvi v
    E     ycn lbn rwj toj uyv jxf mwj w
    D     zdo mco sxk upk vzw kyg nxk x
    C     aep ndp tyl vql wax lzh oyl y
    B     bfq oeq uzm wrm xby mai pzm z

    利用刚才的方法,我们能够得出下表:
    密钥第一个字母:NOPRS
    密钥第二个字母:ABCGMNO
    密钥第三个字母:CNPRUV

    不难看出,当密钥长度设定为3时,密钥的字母数大大增加了,说明密钥很有可能就是3。
    但是却怎么组合也组合不出有意义的解,这是怎么回事呢?
    这说明密钥的实际长度很有可能是3的倍数。

    跳过4和5,我们直接假设密钥长为6。
    A     cgrpfr vanxsn ycznbj qana
    Z     dhsqgs wboyto zdaock rbob
    Y     eitrht xcpzup aebpdl scpc
    X     fjusiu ydqavq bfcqem tdqd
    W     gkvtjv zerbwr cgdrfn uere
    V     hlwukw afscxs dhesgo vfsf
    U     imxvlx bgtdyt eifthp wgtg
    T     jnywmy chuezu fjguiq xhuh
    S     kozxnz divfav gkhvjr yivi
    R     lpayoa ejwgbw hliwks zjwj
    Q     mqbzpb fkxhcx imjxlt akxk
    P     nrcaqc glyidy jnkymu blyl
    O     osdbrd hmzjez kolznv cmzm
    N     ptecse inakfa lpmaow dnan
    M     qufdtf joblgb mqnbpx eobo
    L     rvgeug kpcmhc nrocqy fpcp
    K     swhfvh lqdnid ospdrz gqdq
    J     txigwi mreoje ptqesa hrer
    I     uyjhxj nsfpkf qurftb isfs
    H     vzkiyk otgqlg rvsguc jtgt
    G     waljzl puhrmh swthvd kuhu
    F     xbmkam qvisni txuiwe lviv
    E     ycnlbn rwjtoj uyvjxf mwjw
    D     zdomco sxkupk vzwkyg nxkx
    C     aepndp tylvql waxlzh oyly
    B     bfqoeq uzmwrm xbymai pzmz

    解得密钥为:CONNON
    原文为:
    asecre tmakea womanw oman
    整理后得:
    A secret make a woman woman.

    读完本文后,你会发现破译维吉尼亚密码的快慢与破译的成功与否在很大的程度上取决与对于密钥长度的判断。因此当密文重复出现同一段字母组合的时候,你就要注意了:这两段重复字母的位置差,很有可能就是密钥长度的倍数。
    例如:
    (ABC)NFGAEIUHGOIUGSH(ABC)AGSDGASD……
    文段中ABC重复出现。从前一个A开始数,数到后一个A的前一个字母,一共有18个字母。则密钥的长度很有可能就是3或6(9或18都太长了)。
    利用这种方法,我们就能更快地找出密钥的长度,也就能更快地破解密码了。

    注意:
    1.判断是否与标准频率符合的时候,不仅要考虑是否低频率的字母出现得多,还要考虑是否高频率的字母出现得少。
    2.标准频率顺序为:
    etaoinshrdlcumwfgypbvkjxqz

  • 相关阅读:
    安全运维中基线检查的自动化
    解决“指定的服务已经标记为删除”问题
    linux让命令或程序在终端后台运行的方法(Ubuntu/Fedora/Centos等一样适用)
    微信小程序、SSL证书、开启服务器TSL1.0、TSL1.1、TSL1.2服务
    linux screen工具
    11.2.0.1升级到11.2.0.4报错之中的一个:UtilSession failed: Patch 9413827
    swift 编译提前定义 --不知道怎么定义,可是能够#if
    编译安装 gcc 4.9并验证使用
    sparkR处理Gb级数据集
    【J2EE】在项目中理解J2EE规范
  • 原文地址:https://www.cnblogs.com/milantgh/p/3647672.html
Copyright © 2011-2022 走看看