zoukankan      html  css  js  c++  java
  • [CTF]栅栏密码学习

    [CTF]栅栏密码学习

    即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。栅栏密码是一种置换密码。

      例如密文:TEOGSDYUTAENNHLNETAMSHVAED

      解密过程:先将密文分为两行

      T E O G S D Y U T A E N N
      H L N E T A M S H V A E D

      再按上下上下的顺序组合成一句话

      THE LONGEST DAY MUST HAVE AN END.

    加深的
           密文为:

      PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI

      去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI

      共64个字符,以8个字符为一栏,排列成8*8的方阵(凯撒方阵):

      P F E E S E S N
      R E T M M F H A
      I R W E O O I G
      M E E N N R M A
      E N E T S H A S
      D C N S I I A A
      I E E R B R N K
      F B L E L O D I

      从上向下竖着读:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI

      插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI





    经典加密技术实例
    经典加密主要采用了两种加密技术:替代技术和置换技术。

    (1)替代技术

    替代技术是将明文中的每个元素(字母、比特、比特组合或字母组合)映射为另一个元素的技术。明文的元素被其他元素所代替而形成密文。在经典加密技术中使用的元素一般为字母或数字。下面给出经典加密中几种有代表性的替代技术。

    1)凯撒密码

    凯撒密码是最早使用的替代密码。

    定义1 凯撒密码将字母表视为一个循环的表,把明文中的字母用表中该字母后面第3个字母进行替代。凯撤密码的明文字母和密文字母的对应关系如下:

    明文字母:a b c d e f g h I j k l m n o p q r s t u v w x y z

    密文字母:DEFGHIJKLMNOPQRSTUVWXYZABC

    若让每个字母对应一个数值(a=0,b=1,……,z=25),则该算法可以表示为:



    定义2 将1算法一般化,即密文字母与明文字母的偏移可以是任意值,形成了所谓的移位密码,其算法可以表示为:


    k就是加密算法的密钥,可以在1到25之间取值。解密算法可以表示为:



    由于k的取值范围的限制,凯撒密码的密钥空间很小,难以抵御强行攻击密码分析。攻击者最多尝试25次,就一定能够破译密码。

    2)单字母替代密码

    为了加大凯撒密码的密钥空间,可以采用单字母替代密码。单字母替代密码是将密文字母的顺序打乱后与图文字母对应。

    明文字母:a b c d e f g h I j k l m n o p q r s t u v w x y z

    密文字母:OGR F C Y S A L X U B Z Q T W D V E H J M K P N I

    此时的密钥空间大小为26!,约为4×1026。即使每微秒试一个密钥,也需要花费约1010年才能穷举所有的密钥。因此,强行攻击法不太适合。

    3)Vigenere密码

    Vigenere密码利用一个凯撤方阵来修正密文中字母的频率。在明文中不同地方出现的同一字母在密文中一般用不同的字母替代。

    凯撒方阵的形式为:

    A B C D E F G … Y Z

              B C D E F G H … Z A

              C D E F G H I … A B

              D E F G H I J … B C

                             …

              Z A B C D E F … X Y

    加密时,使用一个通信双方所共享的密钥字母串(如:HAPPYTIME),将密钥字母串重复书写在明文字母的上方。对要加密的明文字母找到上方的密钥字母,然后比一下以确定凯撒方阵的某一行〔以该密钥字母开头的行〕。最后利用该行的字母表,使用凯撒密码的加密方法进行替代:

    例如:

    密钥: H A P P Y T I E H A P P Y T I M

    明文: p l e a s e s e n d t h e d a t a

    明文中的第一个e用凯撒方阵中的P行(PQRSTU…O)进行加密,因此被T替代;第二个e用方阵中的T行(TUVWX…S)进行加密,因此被X替代。

    即使只选择凯撒方阵中的任意m行,Vigenere密码的密钥字的长度将是26m,穷举密钥空间将需要很长时间,例如m=5,密钥空间超过11000000,已经足以阻止手工穷举密钥搜索。在Vigenere密码中,一个字母能够映射成m个可能字母中的一个,这样的密码体制称为多表密码体制,一般情况下对多表密码体制的密码分析比单表困难。

    (2)置换技术

    置换是在不丢失信息的前提下对明文中的元素进行重新排列。

    1)矩形转置密码

    将明文写成矩形结构,然后通过控制其输出方向和输出顺序来获得密文。例如,明文please send the data在不同输出顺序下的密文如下图所示。矩形方阵上方的数字和字母串为代表输出顺序的密钥,字母串按字母顺序输出(AEFRT)。

    输 出 顺 序

    1 2 3 4 5

    p 1 e a s

    e s e n

    d t h e

       d a t a
     
    输 入 方 向
     
    输 出 顺 序

    3 5 1 4 2

    p 1 e a s

    e s e n

    d t h e

       d a t a
     
    输 入 方 向
     
    输 出 顺 序

    A F T E R

    p 1 e a s

    e s e n

    d t h e

       d a t a
     
    输 入 方 向
     
    密文:ped l destaaehtsnea
     
    密文:estasneaped eahtl d
     
    密文:ped aehtl dsneaesta
     
    图 矩形转置密码加密示意图
     


    2)图形转置密码

    一个三角形转置密码的例子如下图所示

    e

    h a v

    h a r r y

    o k s d o e s

    h o w m a n y b o

     

    输 入 方 向
     
    输出方向
     
    明文:how many books dose harry have

    密文:OSYVEBERAYORHNDAASHMKWOOH
     
    图 三角形转置密码加密示意图
     
    http://www.sdpc.edu.cn/jpkc/wlaq/szal/aqslfx/sl7.htm
     

  • 相关阅读:
    linux中按行读取指定行
    linux常用配置文件
    linux虚拟机设置网络
    jenkins新建一个robot脚本的job
    jenkins中配置邮件发送
    jenkins中robot framework插件安装
    Jenkins subversion svn插件安装失败
    jenkins节点启动
    {"non_field_errors":["Unable to log in with provided credentials."]}% 无法使用提供的凭据登录
    路径模板
  • 原文地址:https://www.cnblogs.com/liume/p/10126489.html
Copyright © 2011-2022 走看看