crypto
常见密码
栅栏密码
栅栏密码是一种简单的移动字符位置的加密方法,规则简单,容易破解。栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文。例如:
明文:栅栏密码加密规则示例
每组字数:5
按照字数先把明文分成:
栅栏密码加
密规则示例
先取每组第一个字:栅密
再取每组第二个字:栏规
……
最后得到“栅密栏规密则码示加例”。
解密则反推:
密文被分成2个字一组:
栅密
栏规
密则
码示
加例
先取每组第一个字:栅栏密码加
再取每组第二个字:密规则示例
最后得到“栅栏密码加密规则示例”。
凯撒密码
凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。这是一种位移加密方式,只对26个字母进行位移替换加密,规则简单,容易破解。下面是位移1次的对比:
将明文字母表向后移动1位,A变成了B,B变成了C……,Z变成了A。同理,若将明文字母表向后移动3位:
则A变成了D,B变成了E……,Z变成了C。
字母表最多可以移动25位。凯撒密码的明文字母表向后或向前移动都是可以的,通常表述为向后移动,如果要向前移动1位,则等同于向后移动25位,位移选择为25即可。
MD5和哈希值
md5值和哈希值是两个概念,千万别搞混淆。
- MD5是最常见的一种摘要算法,它计算出来的结果称为md5值,它是一个32位长度的16进制字符串。
- 哈希值是一个整型数字,它主要用于字典查找时比较字典的key值,对于Python来说,每一个可哈希的对象都有一个哈希值,像int、str、unicode、tuple这些对象,都可以计算它们的哈希值。
- 哈希算法主要有MD4、MD5、SHA。
MD4 1990年 输出128位 (已经不安全)
MD5 1991年 输出128位 (已经不安全)
SHA-0 1993年 输出160位 (发布之后很快就被NSA撤回,是SHA-1的前身)
SHA-1 1995年 输出160位 (已经不安全)
SHA-2包括SHA-224、SHA-256、SHA-384,和 SHA-512,分别输出224、256、384、512位。 (目前安全)
- 冲突避免:
2的128次方为340282366920938463463374607431768211456,也就是10的39次方级别
2的160次方为1.4615016373309029182036848327163e+48,也就是10的48次方级别
2的256次方为1.1579208923731619542357098500869 × 10的77次方,也就是10的77次方
猪圈密码
猪圈密码(亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。
常见密码学算法
对称密码算法(Symmetric-key Algorithm)
对称算法 是指加密秘钥和解密秘钥相同的密码算法,又称为 秘密秘钥算法 或 单密钥算法 。
该算法又分为 分组密码算法(Block cipher) 和 流密码算法(Stream cipher) 。
分组密码算法
又称块加密算法
加密步骤一:将明文拆分为 N 个固定长度的明文块
加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块
加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文
流密码算法
又称序列密码算法
加密:每次只加密一位或一字节明文
解密:每次只解密一位或一字节密文
非对称密码学
非对称算法 是指加密秘钥和解密秘钥不同的密码算法,又称为 公开密码算法 或 公钥算法,该算法使用一个秘钥进行加密,用另外一个秘钥进行解密。
- 加密秘钥可以公开,又称为 公钥
- 解密秘钥必须保密,又称为 私钥
常见非对称算法包括 RSA、SM2(国密)、DH、DSA、ECDSA、ECC 等。
摘要算法(Digest Algorithm)
摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数 等。
- 摘要算法所产生的固定长度的输出数据称为 摘要值 、 散列值 或 哈希值 ,摘要算法无秘钥。
- 摘要算法 通常用来做数据完整性的判定,即对数据进行哈希计算然后比较 摘要值 是否一致。
摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和 MAC(Message Authentication Code,消息认证码算法);另国密标准 SM3 也属于摘要算法。
MD 系列 主要包括 MD2、MD4、MD5
SHA 系列 主要包括 SHA-1、SHA-2 系列(SHA-1 的衍生算法,包含 SHA-224、SHA-256、SHA-384、SHA-512)
MAC 系列 主要包括 HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384 和 HmacSHA512 算法