随着互联网的发展 信息安全越来越重要 用户的隐私保护尤为的重要
简单了解一下加密 仅作为记录
做不到绝对的安全 只有相对安全 尽量让破解成本大于破解所获得利益就可以了
加密有很多种加密方式 ,数据的本制都是二进制 加密也就是对二进制的处理:
I.HAS算法 不可逆
安全散列算法(Secure Hash Algorithm,缩写为SHA)能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法.不同数据加密之后是定长度的,哈希算法是取数据的一部分[被称为数据指纹] 不可逆
应用场景:
校验 正版 盗版 例如:盗版的跟原版的二进制文件是不一样的 那么哈希值也会天壤之别
散列碰撞:不同数据得到的哈希值一样 出现一样的概率无法计算 因为毕竟32位能表示的是有限的 但是对于客户端用是够用的
用户密码加密:选用什么加密 服务器是没有必要知道用户密码 所以不需要用对称和非对称 选用哈希就可以了 因为同样的数据哈希值是一样的
直接MD5 反查询很容易就查到了 可以加盐 如果盐泄露了 [为了防止盐泄露 逆向用很容易就能定位到盐 可以用随机盐]
最终方案:可以选用HMAC加密 包含了随机盐
使用秘钥加密并且做了2次散列 实际开发中 秘钥来自服务器并且每个账户对应一个秘钥 这个秘钥可以用RSA进行再次加密
如果黑客拦截到这段加密后的32位字符串 模拟用户登录 我们可用HTTPS双向验证 HMAC密码后方追加一个来自服务器的时间戳并且进行一次MD5 发送给服务器 服务器进行验证 验证范围在这一分钟和上一分钟时间之内通过 有效登录控制在2分以内 所以大大提高了安全性
II.对称 AES DES 3DES
密钥加密--->密文
密钥解密--->明文
III.非对称 RSA 非对称的安全性更高 运算算出来的 所以性能差
公钥加密 私钥加密
私钥加密 公钥解密
BASE64 是一种编码 把数据转换成字符串
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。
网友评论