暴雪战网安全令的原理
1、首先創(chuàng)建一個(gè)56位的byte數(shù)組,結(jié)構(gòu)如下:
00 byte[1] 固定為1;
01 byte[37] 37位的隨機(jī)數(shù)據(jù),只使用一次,用來解密服務(wù)器返回?cái)?shù)據(jù);
38 byte[2] 區(qū)域碼: US or EU;or CN
40 byte[16] 設(shè)備模型數(shù)據(jù)(手機(jī)型號(hào),或者任意數(shù)據(jù))
2、向服務(wù)器請求創(chuàng)建數(shù)據(jù)發(fā)送請求
獲取服務(wù)器返回?cái)?shù)據(jù),長度應(yīng)該為45位,結(jié)構(gòu)如下:
00 - 07 服務(wù)器時(shí)間(網(wǎng)絡(luò)字節(jié)序,計(jì)算本地時(shí)間與服務(wù)器時(shí)間的差值);
08 - 45 通過步驟1中37位隨機(jī)數(shù)據(jù)加密過的數(shù)據(jù)(包括序列號(hào)和私鑰)
3、將步驟2中08 - 45這37位數(shù)據(jù)進(jìn)行解密
操作方法為與步驟1中的37位隨機(jī)數(shù)據(jù)按位進(jìn)行 “與或”操作
解密后的37位數(shù)據(jù)結(jié)構(gòu)如下:
00 - 19 私鑰(私鑰就是計(jì)算驗(yàn)證碼所用的鑰匙)
20 - 37 序列號(hào)(格式為US-xxxx-xxxx-xxxx,就是在戰(zhàn)網(wǎng)上綁定到賬戶所需要的14位數(shù)字序號(hào),輸入的時(shí)候,不需要中間的連字符)
這也就是為什么所有版本的手機(jī)驗(yàn)證器(包括java,安卓等)第一次啟動(dòng)需要聯(lián)網(wǎng)的原因,以后啟動(dòng)則無需聯(lián)網(wǎng),只需要通過私鑰將當(dāng)前時(shí)間加密即可,除非本地時(shí)間更改,與服務(wù)器不同步
4、獲取驗(yàn)證碼
將當(dāng)前時(shí)間,通過時(shí)間差值計(jì)算出服務(wù)器時(shí)間
然后服務(wù)器時(shí)間除以30000(毫秒,即30秒,也就是每半分鐘更換一次驗(yàn)證碼)
將該值通過步驟3中的私鑰,經(jīng)過SHA1算法計(jì)算出結(jié)果(SHA1算法很常見,這里不贅述),這個(gè)結(jié)果就是驗(yàn)證碼 .
總結(jié)
以上是生活随笔為你收集整理的暴雪战网安全令的原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交互软件Axure—高保真原型
- 下一篇: 区间dp总结