Home avatar

di da di! di da di!

从FIPS 46-3中理解DES算法

DES是一种对称密钥的块加密算法。”对称密钥”,是因为加密、解密用的密钥是一样的(这不同于RSA等非对称密钥体系)。“块加密”,是因为这种算法把明文划分为很多个等长的块(block),对每个块进行加密,最后以某种手段拼在一起。“块加密”亦称“分组加密”。

从RFC1321中理解MD5算法

MD5算法的输入是任意长度的信息,而输出是固定的长度为128位的信息,也就是固定大小为16字节的数组(byte=8bit)

根据上面所说,MD5算法的输入是任意长度的信息,长度可以是0,也可以不是8的倍数,针对任意长度的输入,就需要通过下面的五个步骤来计算出它的MD5值

输入可以是不定长的信息,但是实际上转化到算法逻辑中时又需要根据定长的信息来计算,因此,首先需要做的就是补位操作,方法如下: 将二进制数据对512进行取模,如果有余数不等于448,则将余数补足到448的长度,补足的规则是先补1,后面全补0,相当于N*512+448的长度,N为一个非负整数(也包括0)

从RFC2040中理解RC5算法

作为同样是由Rivest推出的算法,RC5算法与RC4算法是完全不同的,一个明显的特征是RC5采用的是基于Feistel对称结构的分组加密算法

和许多加密方法不同,RC5支持可变的块大小(32、64或128比特),密钥长度(0至2040位)和加密轮数(0~255)。最初建议选择的参数是64位的块大小,128位的密钥和12轮加密

从RFC3174中理解SHA1算法

总体上来说,SHA1算法和MD5算法很类似(因为它们都属于是针对于信息摘要的哈希算法),大体的算法流程也是基本相同,可以回忆下MD5算法的五个步骤,可以说SHA1是升级版本的MD5。不同点从直观上看,SHA1返回的信息长度是160位(20个字节),而MD5则是128位(16个字节),因此相较于MD5算法来说会更加安全一些(不过也仅仅是一些而已)

算法流程就不多做介绍,和MD5算法类似,同样需要通过五个步骤来完成

基本一样,不做额外说明

同上

这一步开始有不同了,SHA1算法也同样有初始变量,与MD5不同的是,MD5最终是依靠初始变量组合起来的16个字节的结果,而SHA1结果为20个字节,因此也在初始变量中多了4个字节,定义如下

从RFC6229中理解RC4算法

RC4是在1987年提出,和DES算法一样。是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES算法的是。RC4不是对明文进行分组处理,而是通过字节流的方式依次加密明文中的每个字节,同样的,解密的时候也是依次对密文中的每个字节进行解密。

RC4算法的一个特点是可变密钥,可变范围在1256字节,也就是8位2048位

RC4算法简单、易于描述,主要使用一个S表来生成密钥流,分为密钥调度算法(KSA)和伪随机数生成算法(PRGA)两个步骤。其中KSA使用原始密钥生成S表,PRGA利用S表来产生密钥流序列。

上面已经说过了,原始密钥K是可变的,而加密单位的话以一个字节为准。

从RFC6234中理解SHA2-256算法

SHA2-256算法是SHA第二代的算法,256指的是它的算法结果会产生256位数据,也就是32字节、64位长度的16进制字符。

算法流程就不多做介绍,同其他哈希算法流程类似,都需要经历补位、填充长度以及分组,不同的是每轮循环所做的操作

基本一样,不做额外说明

同上

依旧是从常量的初始化开始,根据结果256位来看,需要8个常量组成,常量的计算方式是取自自然数中前面8个素数(2,3,5,7,11,13,17,19)的平方根的小数部分的前32位,举例看

理解CRC32算法

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。 ––维基百科