对称
DES:
DES算法 再大多运用在 如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等领域
DES算法的入口参数有三个:Key、Data、Mode。
Key为8个字节共64位,是DES算法的工作密钥;
Data也为8个字节64位,是要被加密或被解密的数据;
Mode为DES的工作方式,有两种:加密或解密。
DES算法是这样工作的:
如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果
如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
在通信网络的两端,双方约定一致的Key
3DES
在 DES 的基础上,使用三重数据加密算法,对数据进行加密,这样来说,破解的概率就小了很多
使用 3 条 56 位的密钥对数据进行三次加密。3DES是 DES 向 AES 过渡的加密算法
K1、K2、K3决定了算法的安全性,若三个密钥互不相同,本质上就相当于用一个长为168位的密钥进行加密。.它在对付强力攻击时是比较安全的。若数据对安 全性要求不那么高
K1可以等于K3。这种情况下密钥的有效长度为112位
AES
高级加密标准,是下一代的加密算法标准,速度快,安全级别高
AES算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个,AES是一个迭代的、对称密钥分组的密码,它可以使用128、 192和256位密钥, 并且用128位(16字节)分组加密和解密数据
算法 Key 位数 是否可逆 其它
MD5 没有Key, 有区别16位和32位, 不可逆 (无)
SHA (?) (?) 不可逆 (无)
RSA 有(公Key,私KEY) (?) 可逆 公、私Key采用不同的加密算法
DES3 有 (?) 可逆 (无)
AES 有 (?) 可逆 (无)
BASE64 没有KEY (?) 可逆 (无)
哈希函数:MD5,SHA 是没有密钥的,相当与指纹的概念,因此也是不可逆的;
md5是128位的,SHA有不同的算法,有128,256等位。。。如SHA-256,SHA-384
Base64,这更加不属于加密算法的范围了,它只是将byte[]数组进行了转换,为什么要转换呢?就是因为很多加密后的密文后者一些特殊的byte[]数组需要显示出来,或者需要进行传递(电子邮件),但是直接转换就会导致很多不可显示的字符,会丢失一些信息,因此就转换位Base64编码,这些都是可显示的字符。所以转换后长度会增加。它是可逆的
再就是 3DES,DES 这才是加密算法,因此也是可逆的,加解密需要密钥,也就是你说的key
最后是 RSA ,这是公钥密码,也就是加密和解密密钥不同,也是可逆的。
非对称 rsa
非对称加密DH为了更好的区分明文和密文,用【AA】代表AA被加密,AA 代表正常未加密
client 发出请求
server 收到请求,并自己生成一对密钥,即 公钥S 和 私钥S
server 把生成的 公钥S 传递给 client (除了 公钥S ,还有很多额外信息)
client 收到 公钥S 后进行判断,若无效,弹出警告,否则生成一串随机数,我们称之为 私钥C ,然后 client 用 server 传过来的 公钥S 对该随机数加密,形成【私钥C】
client 把【私钥C】传递给 server
server 收到【私钥C】,用 私钥S 把【私钥C】解密成 私钥C,然后把需要传递的数据用 私钥C 进行加密
server 把【数据】传递给 client
client 收到【数据】,用 私钥C 解密,完成一波收割
整体流程就是这样,那么就想问,为什么有这么多 key?一会公钥一会私钥?很烦?
那我们先假设 server 有私钥和公钥,那么传递给 client 公钥,client 用公钥加密数据,传递给 server,server 用私钥再解密,听上去很美好,但是很烦,因为涉及到对称加密和非对称加密
对称加密是指加密和解密用一致的密钥,特点是快
非对称加密是指密钥区分公钥和私钥,公钥加密,私钥解密(私钥好比唯逐个把钥匙,公钥好比锁,钥匙只有一把,但锁可以有很多,被锁头锁上的数据全天下只有一把私钥才能 单开),特点是安全,但是慢
这回理解了吧,上述方式缺点是 慢,所以 https 的流程综合了对称加密和非对称加密的优点,利用非对称加密的安全性来加密那一串随机数--私钥C,利用对称加密的快捷性来加
密报文,总体来说就是把真正加密解密的密钥(私钥C)用公钥S和私钥S来加密,很灵性啊。