加密方式分为:单向加密和双向加密。
单向加密
该方式不可逆:MD5摘要算法
md5加密后密文是固定的的,所以长度也是固定的,长度比加密数据小很多。
应用场景
密码存储、信息完整性校验等
信息完整性校验如文件是否被篡改,先计算其摘要,如果再有一个第三方认证机构发放证书,就是数字签名的原理。
双向加密
该加密方式可逆,包括对称加密和非对称加密
。
1、对称加密即加解密密钥相同,常见对称加密有AES/DES
AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,相比较而言,AES密钥长度更长、运算速度快、安全性高、资源消耗更低。
优点是加密速度快;缺点加解密双方密钥相同,容易泄露。
2、非对称加密,常见的有RSA/DSA
非对称加密,成熟度高、安全性高、运算速度更低。
加密过程:发送者公钥加密,接受者私钥解密,只有拥有私钥才能解密。
优点:只要私钥不被泄露,被几率极低;缺点:加密速度慢。
常见应用场景
客户端填写个人隐私信息如身份证号、手机号、银行卡号等提交给服务端,需要用公钥加密后才能提交,服务器端持有私钥,对其解密后存储,然后返回对应的code。
数据签名过程:甲方私钥加密,乙方公钥解密,如果解密成功,就说明是甲方加的密,无法抵赖。
3、对称与非对称两者对比
对称加密算法更适合内部系统加密,不适合互联网,由于处理速度快,所以更适合大数据量的加解密处理;
非对称加密算法适合小数据量的加解密。
总结
综上,各种加密方式都有其优缺点,实际应用时可以混合使用,综合其优点,常用组合为RSA+AES
;
1、客户端生成AES密钥
2、RSA公钥对AES的密钥进行加密
3、AES对数据进行加密
这样集成了两种加密算法的优点,既保证了数据加密的速度,又实现了安全方便的密钥管理。
应用场景
客户端提交用户名密码信息,加密后提交,服务端解密后保存,然后返回token,客户端解密后保存。
Base64
Base64是一种用64个字符来表示任意二进制数据的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
Base64的原理很简单,准备一个包含64个字符的数组,=是用来作为填充字符的
private static char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray();
二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64编码
通过把3字节的二进制数据编码为4字节的文本数据,好处是编码后的文本数据可以在邮件正文、网页等直接显示。如果要编码的二进制数据不是3的倍数,Base64在编码的末尾加上1个或2个=号,表示补了多少字节,解码的时候,会自动去掉。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。