加密算法

2019-04-14 21:18发布

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth 2.0


一、RSA
1、随机两个不相等的质数p和q;
2、欧拉函数: φ(n) = (p-1)(q-1);
3、随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
4、计算e对于φ(n)的模反元素d,"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1
ed - 1 = kφ(n)
5、公钥就是 (n,e),私钥就是(n, d)。


二、Base64
1、Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节。
关于这个编码的规则:
①.把3个字符变成4个字符。
②每76个字符加一个换行符。
③.最后的结束符也要处理。


三、AES
1、根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128、AES-192和AES-256。
2、AES加密过程涉及到4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。
3、加密过程:
(1)字节代替的主要功能是通过S盒完成一个字节到另外一个字节的映射。
(2)实际移位的操作即是:第一行保存不变,第二行循环左移1个字节,第三行循环左移2个字节,第四行循环左移3个字节。


四、MD5
功能:
    输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);
    不同的输入得到的不同的结果(唯一性);
    根据128位的输出结果不可能反推出输入的信息(不可逆);
算法过程:
    对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
     第一步:填充,使输入信息长度对512求余等于448,不足则填充。填充的方法是填充一个1和n个0。填充完后,信息的长度就为N*512+448(bit);
     第二步:记录信息长度:用64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位;
     第三步:装入标准的幻数(四个整数);
     第四步:四轮循环运算:循环的次数是分组的个数(N+1)
app保存密码,重新登录。

热门文章