从FIPS 46-3中理解DES算法
DES是一种对称密钥的块加密算法。”对称密钥”,是因为加密、解密用的密钥是一样的(这不同于RSA等非对称密钥体系)。“块加密”,是因为这种算法把明文划分为很多个等长的块(block),对每个块进行加密,最后以某种手段拼在一起。“块加密”亦称“分组加密”。
DES是一种对称密钥的块加密算法。”对称密钥”,是因为加密、解密用的密钥是一样的(这不同于RSA等非对称密钥体系)。“块加密”,是因为这种算法把明文划分为很多个等长的块(block),对每个块进行加密,最后以某种手段拼在一起。“块加密”亦称“分组加密”。
MD5算法的输入是任意长度的信息,而输出是固定的长度为128位的信息,也就是固定大小为16字节的数组(byte=8bit)
根据上面所说,MD5算法的输入是任意长度的信息,长度可以是0,也可以不是8的倍数,针对任意长度的输入,就需要通过下面的五个步骤来计算出它的MD5值
输入可以是不定长的信息,但是实际上转化到算法逻辑中时又需要根据定长的信息来计算,因此,首先需要做的就是补位操作,方法如下: 将二进制数据对512进行取模,如果有余数不等于448,则将余数补足到448的长度,补足的规则是先补1,后面全补0,相当于N*512+448的长度,N为一个非负整数(也包括0)
总体上来说,SHA1算法和MD5算法很类似(因为它们都属于是针对于信息摘要的哈希算法),大体的算法流程也是基本相同,可以回忆下MD5算法的五个步骤,可以说SHA1是升级版本的MD5。不同点从直观上看,SHA1返回的信息长度是160位(20个字节),而MD5则是128位(16个字节),因此相较于MD5算法来说会更加安全一些(不过也仅仅是一些而已)
算法流程就不多做介绍,和MD5算法类似,同样需要通过五个步骤来完成
基本一样,不做额外说明
同上
这一步开始有不同了,SHA1算法也同样有初始变量,与MD5不同的是,MD5最终是依靠初始变量组合起来的16个字节的结果,而SHA1结果为20个字节,因此也在初始变量中多了4个字节,定义如下
Base64算法是一种编码算法,它是采用常见的64个字符来表示做数据映射的表,分别是A-Z、a-z、+、/。
64对应的二进制是0b111111,也就是
RC4是在1987年提出,和DES算法一样。是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。但不同于DES算法的是。RC4不是对明文进行分组处理,而是通过字节流的方式依次加密明文中的每个字节,同样的,解密的时候也是依次对密文中的每个字节进行解密。
RC4算法的一个特点是可变密钥,可变范围在1256字节,也就是8位2048位
RC4算法简单、易于描述,主要使用一个S表来生成密钥流,分为密钥调度算法(KSA)和伪随机数生成算法(PRGA)两个步骤。其中KSA使用原始密钥生成S表,PRGA利用S表来产生密钥流序列。
上面已经说过了,原始密钥K是可变的,而加密单位的话以一个字节为准。