2021-05-07

古典加密算法


对称加密

所谓对称加密,粗略来说是指的是两方通信时(如Alice和Bob两人),预先持有相同的密钥(secret key)并希望其在公开渠道通信期间的消息他人无法知晓内容。相关的术语见下图:2021-05-07_第1张图片

2021-05-07_第2张图片

特别需要指出的是,加密的算法是公开的,其通信的保密性基于密钥的保密性。

相关算法

恺撒密码(Caesar Cipher)

  • 基于置换
  • 密钥为 [0,26) 的整数,密钥为零时明文密文相同
  • 加密过程:对于每个单字母进行移位(过z回a)
  • 解密过程:反向移位
  • 破解方式:暴力枚举即可

波雷费密码(Playfair Cipher)

  • 基于置换
  • 密钥为短语给定的5*5字母(排列)矩阵,其中I/J占据同一格位置
  • 通过短语生成密钥时,将字母表短语外的剩余字母依次一行一行填写在表格内
  • 加密过程:将明文两两分组。若分组过程中出现连续的字母,则用'x'隔开。对于分组后的每两个字母
  • 若其在5*5矩阵中同一行,则分别替换为其右侧的字母,定义最右侧的右侧为最左侧
  • 若其在5*5矩阵中同一列,则分别替换为其下侧的字母,定义最下侧的下侧为最上侧
  • 若其在5*5矩阵中不同行列,则分别替换为同一行而交换列的字母
  • 解密过程:与加密相同(方向相反)
  • 破解方式:依然容易受到字母频率或二连字(digram)频率分析的攻击

希尔密码(Hill Cipher)

  • 基于置换
  • 密钥为一个矩阵m*m的矩阵,其中m为明文的分块大小,元素为整数(mod 26意义下的)且要求该矩阵有逆矩阵
  • 加密过程:明文按m分块,单个字母视为 [0,26) 的整数,乘密钥矩阵对26取模得到密文
  • 解密过程:密文按m分块,单个字母视为 [0,26) 的证书,乘密钥逆矩阵对26取膜得到明文
  • 破解方式:在得到特定【密文-明文】的配对时,可直接反解密钥

维吉尼亚密码(Vigenère Cipher)

  • 基于置换
  • 属于多字母密码表的一种(即在加密过程中使用不同的字母置换的方法)
  • 密钥是字符串
  • 加密过程:拓展密钥(循环反复),转换为数字相加取模并转换回来
  • 解密过程:类似加密,变为密文和密钥的减法
  • 破解方式:通过相同子串的公约数可大致猜出密钥长度(循环节),再对于每个周期同一个位置进行单表置换密码类似的破解即可

你可能感兴趣的:(笔记,算法)