随笔 - 239  文章 - 0  评论 - 623  阅读 - 97万

仿新浪微盾客户端项目简介三

上节我们说到,关于opt算法的说明,也说到这个项目是使用TOTP(基于时间)方法。  

这节讲的主要把它怎么整合项目中。整合项目中,此算法需要注意这么几点。

1. 与服务器端统一的准确时间
由于是使用totp算法,客户端与服务器端的算法是必须要保存一致的。

对时接口,获取服务器端准确时间,返回{“svr_time”:1319512158},以秒为单位的时间戳。时间偏移量 = 本地时间 – 服务器端时间, 将时间偏移量保存在地SharePreference中,供计算动态密码时读取服务器端时间 = 本地时间 - 时间偏移量使用时间偏移量的好处是:只需要从服务器获取一次时间,以后都可以离线使用微盾。

2. 静态密钥。
加密后静态密钥保存在本地,加密算法为DES,一种对称加密算法,支持加密解密密钥 = 固定字符串 + 设备IMEI号码
这个解密的密钥有什么作用了,是用于微盾两边安全性的提升了。这就引出一个话题,密钥的作用。公钥加密,保存在客户端 很多个,用户知道。私钥解密,保存在服务器 只有一个,只有服务器知道。这种不对称加密的方式,大大的提升了破解难度。至于大家认为,设备的IMEI号是不是多此一举,在以后我会专门用一篇文章论述,这里,就不做过多的赘述了。
有了这两点的分析,我们有了一个完美的设计方案:
有了准确的服务器时间和静态密钥,就能计算出正确的6位动态密码
当用户输入动态密码登录时,服务器会使用同样的时间和密钥算出6位密码进行比对。
服务器做了容错处理,会计算出在某个时刻前1分钟和后一分钟的所有6位密码,只要用户输入正确了其中一个,就算通过.
至于这个方法具体代码,我准备是在Google一个开源项目Google Authenticator 修改。
下面的课程,我们将进入具体的源代码的说明。
用了3节的篇幅,说明了微盾概要设计和技术实现,不知道大家明白没,请给予反馈。
posted on   laozhu1124  阅读(1676)  评论(3编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

淘宝免费计数器
点击右上角即可分享
微信分享提示