登录+加密

加密的几种算法

非对称加密 RSA 公钥 私钥

散列函数 -MD5(32位密钥)-SHA1(40位密钥)  -SHA256(64位密钥) -SHA512(128位密钥)

对称加密 DES  3DES  AES(相对最安全的加密)。等等加密方式

写app的时候,密码在网络上、本地存储,都不可以使用明文,所以需要进行加密

最早使用MD5的方式进行加密,但是目前MD5已经被破解,破解方式是通过大量的数据对比以及散列碰撞,获取大量的数据,其实MD5本身是不可被反序列化的

所以信息安全该如何保证呢?

加盐    (注意:服务器本身不需要知道用户的密码是什么,只需要对比加密后的数据)

-固定盐:有安全隐患,所有人都知道盐是什么,如果员工离职带走了盐,泄漏出去后,所有用户的密码都会被破解

-随机盐:比较安全 ,从服务器获取一个随机盐,保存在本地,通过hmac加密算法,进行加密

随机盐虽然比较安全,但是有安全隐患,假如黑客截获了你的url拿到了数据,他可以模拟请求,一样可以登录进你的账号,这时候我们可以设置一个时效性,通过hmac加密后的数据 拼接 时间 再进行一次md5,就可以了,大致流程如下:

客户端拥有: 密钥(key)、用户名(username)、原始密码(password)

newPassword = MD5 (hmac(password+key) + 时间戳)

服务器端拥有: 密钥(key)、用户名(username)、hmac(password + key)

这时候 有hmac(password + key)了,那么,只需要 在加上时间戳 进行一次MD5加密

然后对比客户端和服务器端的进行MD5的结果是否一致,判断是否登录成功

那么时间戳该怎么获取呢,因为前端获取的本地时间有可能被更改,所以需要从服务器获取时间,或者你使用的哪个时间进行的md5,就把这个时间传递给服务器,让其加密后对比,具体看需求而定

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,924评论 18 139
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 11,586评论 5 29
  • 一、GET/POST方法简介&用户安全 1、GET/POST方法简介 在客户端和服务器之间进行请求-响应时,两种最...
    方圆十里不留母狗阅读 32,157评论 0 13
  • 在我难过的时候更多的是文字的陪伴. 关于感情:有一个词语 友达之上,恋人未满,很多人应该都有这样类似的样子,说白...
    Fighting徐先生阅读 207评论 0 0
  • 马上就要过年了,家里的好味道也开始有条不紊的张罗起来了,一年忙到头唯一放松的节日就是过年时的假期,可以玩的...
    Demage的世界阅读 700评论 0 1