Skip to content

orjuly/generate_device_password

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

共享充电线密码生成


制定设备编号,以及每个批次的密钥字符串,可由客户自助任意设定。

“密钥+设备编号+密码序号”组成的字符串进行md5运算,得出16个字节的md5值(用数组md5[16]表示)。取最后3位16进制数PWS(UINT16 类型)

按公式(C语法):

第1位密码: 1:20分钟,2:1小时,3:2小时,4:3小时,5:12小时
第2位密码:( (PWS>>9) & 0x7 ) % 5+1
第3位密码:( (PWS>>6) & 0x7 ) % 5+1
第4位密码:( (PWS>>3) & 0x7 ) % 5+1
第5位密码:( PWS & 0x7) % 5+1

密码序号:两位数字,范围是01~20。

注:如果遇到生成的后5位密码是“11111” ,”22222”,“33333”, “44444”,“55555”这5种密码,后台跳过取下一个序号, 因为线充会自动屏蔽这种密码组合。

eg.

假设密钥串:“RUIOO”,设备编号:“18B1P00001”,序号01的密码计算是:
对“RUIOO18B1P0000101“进行MD5值计算,结果为:”2f8712c3fc8605fe1e4c98976c0ffd02“;
取最后3位组成16进制数:“d02”;
第2位密码:( (0xd02>>9) & 0x7 ) % 5+1=2
第3位密码:( (0xd02>>6) & 0x7 ) % 5+1=5
第4位密码:( (0xd02>>3) & 0x7 ) % 5+1=1
第5位密码:( 0xd02& 0x7) % 5+1=3
密码后4位组合为:2513

密钥值:可以根据批次改变,后台存储每个批次对应的密钥值即可;
密码序号:两位数字,范围是01~20,也就是每个终端设备共配20个密码,减少密码重复概率。
算法优势:该算法对相邻的设备编号之间的密码重复概率最小。

About

共享充电线密码生成

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages