常用加密算法

在ctf比赛以及各种加密解密的游戏中,经常会遇到各种加密信息需要解密。

在此,我总结了一些常见的加密方法(有的比较古老比较经典),持续更新。

##凯撒密码

##维吉尼亚密码

##栅栏密码

##CRC32
CRC码实质上是循环冗余校验码,是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。

而CRC32就是其中的一种,其算法能够根据原数据生成8位16进制的CRC码。

正是因为这个功能,它也可以被用作特定情况下的数据加密。

在JAVA的标准库中就有现成的类可以实现对字符串的CRC32的加密。

参考:

CRC校验算法原理

CRC加密代码

##摩斯密码

##MD5
MD5 即 Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。

MD5算法具有以下特点:

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
  5. 强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

因此其作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(也就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

MD5密文特点

  1. 标准MD5加密时,密文为32位或16位
  2. 加密过程可以进行加盐,或多次加密等等
  3. 其他加密类型参考这里

MD5应用:

  1. 一致性验证,即文件校验
  2. 数字证书,即指纹识别
  3. 安全访问认证,即操作系统的登录认证等

参考:

MD5加密与网络数据安全

简单MD5解密