BMS系统电池的认证方法、装置、设备及存储介质与流程
bms系统电池的认证方法、装置、设备及存储介质
技术领域
1.本技术涉及软件管理系统技术领域,特别是涉及一种bms系统电池的方法、装置、设备及存储介质。
背景技术:
2.目前,bms系统的电池(battery management system),在认定电池是否为原装时,一般不做验证或者做简单协议验证,其加密验证仅仅止步于sha1认证。很显然,一般的验证无法防止市场上盗版电池的出现,且盗版电池不仅损害了主机厂利益,还对电动摩托甚至汽车的安全行驶带来巨大隐患,侵害消费者的人身安全。
技术实现要素:
3.本技术主要解决的技术问题是提供一种bms系统电池的方法、装置、设备及存储介质,能够解决bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权问题。
4.为解决上述技术问题,本技术采用的一个技术方案是:提供一种bms系统电池的认证方法,所述认证方法包括:计算电路板的第一密钥,所述第一密钥包括实时时间信息;接收来自上位机的第二密钥;判断所述第一密钥和所述第二密钥是否匹配;若匹配,则建立和所述电池的连接。
5.其中,所述计算所述电路板的第一密钥,进一步包括:获取所述电路板的初始私钥,所述初始私钥为预设字节长度的第一数组;获取所述电路板上高精度时钟的实时时间;根据所述初始私钥及所述实时时间得到所述电路板的第一密钥。
6.其中,所述根据所述初始私钥及所述实时时间得到所述电路板的第一密钥,进一步包括:获取预设字节长度的第二数组;将所述第二数组和所述初始私钥中的部分字节进行逻辑运算以得到中间值,并将所述第二数组中的所述部分字节替换为所述中间值,以得到所述第二数组的扩展数组;将所述实时时间附加到所述扩展数组的右侧,以得到第三数组;将所述第三数组进行散列运算,以得到第四数组;对所述第四数组进行抽象处理,以得到抽象数组;根据所述抽象数组计算得到所述第一密钥。
7.其中,所述将所述第三数组进行散列运算,以得到第四数组,进一步包括:形成一辅助元素数组,并根据所述辅助元素数组计算第一整数;将所述第三数组进行移位运算;判断进行移位运算后的所述第三数组是否大于预设数值;若大于,则根据所述第一整数计算得到第二整数;形成一缓冲数组,所述缓冲数组中包括第二整数个所述第三数组的元素;形成第一状态数组,并根据所述第一状态数组及所述缓冲数组计算以得到所述第四数组。
8.其中,所述形成第一状态数组,并根据所述第一状态数组及所述缓冲数组计算以得到第四数组,进一步包括:形成一计算数组,并将所述缓冲数组中的部分起始字节复制进所述计算数组中;形成第一辅助函数及第二辅助函数;根据所述第一辅助函数及所述第二辅助函数构造公共指令以及转换函数,其中,所述转换函数包括选择参数,所述选择参数用于选择所述第一辅助函数或所述第二辅助函数对所述计算数组进行计算;根据所述转换函
数对所述计算数组进行计算,将计算结果与第一状态数组中的对应的元素进行相加并替换原值以得到第四数组。
9.其中,所述根据所述抽象数组计算得到所述第一密钥,进一步包括:获取所述抽象数组中的索引值;根据所述索引值计算中间量;获取一初始ascii码数组,所述初始ascii码数组中包括10位元素;根据所述中间量计算一数字n;获取和所述数字n对应的ascii字符,并将所述ascii字符放置入所述初始ascii码数组中,以得到所述第一密钥
10.其中,所述第一密钥及所述第二密钥为十位的数字和字母的组合。
11.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种bms系统电池的认证装置,所述装置包括:计算模块,用于计算电路板的第一密钥,所述第一密钥包括实时时间信息;接收模块,用于接收来自上位机的第二密钥;判断模块,用于判断所述第一密钥和所述第二密钥是否匹配;建立模块,用于当所述第一密钥和所述第二密钥若匹配时,建立和所述电池的连接。
12.为解决上述技术问题,本技术采用的又一个技术方案是:提供一种bms系统电池的认证设备,所述设备包括处理器以及存储器,所述存储器存储有计算机指令,所述处理器耦合所述存储器,所述处理器在工作时执行所述计算机指令以实现上述任一项所述的bms系统电池的认证方法。
13.为解决上述技术问题,本技术采用的再一个技术方案是:提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述任一项所述的bms系统电池的认证方法。
14.本技术的有益效果是:区别于现有技术的情况,本技术提供一种bms系统电池的方法、装置、设备及存储介质,通过计算电路板的第一密钥,且第一密钥包括实时时间信息,在接入电芯时通过接收通过上位机传输过来的第二密钥,结合实时时间信息将第一密钥和第二密钥进行比对,能够使得仿造者无法大规模应用破解法来生产未经授权的代用电池,有效解决bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权。
附图说明
15.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,其中:
16.图1是本技术bms系统电池认证方法一实施方式的流程示意图;
17.图2是本技术图1中步骤s100一实施方式的流程示意图;
18.图3是本技术图2中步骤s130一实施方式的流程示意图;
19.图4是本技术图3中步骤s134一实施方式的流程示意图;
20.图5是本技术图3中步骤s136一实施方式的流程示意图;
21.图6是本技术bms系统电池认证装置实施例的结构示意图;
22.图7是本技术bms系统电池认证设备实施例的结构示意图;
23.图8是本技术提供的计算机可读存储介质实施例的示意框图。
具体实施方式
24.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.可以理解的是,本技术中bms系统可以包括上位机以及bms系统电路板(包括电芯),其中上位机主要用于bms数据采集和故障检测分析。电路板上的微控制单元(mcu)内设置有固化的firmware(固件),且firmware的数据闪存中有经过加密的初始私钥,且该初始私钥为长度较长的密码,一般经过随机过程生成,且同时包含数字和字母。
26.进一步,bms系统电路板上还设置有高精度实时时钟芯片,本技术中的高精度实时时钟芯片的信号可以为ds3231,当然在其他实施方式中还可以采用其他型号的时钟,此处不做具体限定。可以理解的是,为了验证电池是否原装,每次当bms系统电路板接入电芯后,必须要配合上位机进行验证,通过这个验证来允许电路板接入的电芯是被bms公司允许的,即防止非授权更换电芯,且本技术的验证方法请详见下文的具体描述。
27.请结合图1,图1为本技术bms系统电池的认证方法一实施方式的流程示意图,如图1本技术提供的bms系统电池的认证方法包括如下步骤:
28.s100,计算电路板的第一密钥,第一密钥包括实时时间信息。
29.请进一步结合图2,图2为本技术步骤s100一实施方式的流程示意图,如图2,步骤s100进一步包括如下子步骤:
30.s110,获取电路板的初始私钥,初始私钥为预设字节长度的第一数组。
31.可选地,本技术的电路板的初始私钥可以是长度为20字节(bytes)的第一数组,举例来说,第一数组具体可以为:
32.{0x48,0x65,0x6c,0x6c,0x6f,0x21,0xde,0xad,0xbe,0xef,0x44,0x32,0x14,0xc7,0x42,0x54,0xb6,0x35,0xcf,0x39}
33.当然,在其他实施方式中还可以是其他形式,此处不做具体限定。
34.s120,获取电路板上高精度时钟的实时时间。
35.本技术中,高精度时钟的实时时间可以换算成从2000年1月1日开始以来的秒钟数量。
36.s130,根据初始私钥及实时时间得到电路板的第一密钥。
37.请进一步结合图3,图3为本技术步骤s130一实施方式的流程示意图,如图3,步骤s130进一步包括如下子步骤:
38.s131,获取预设字节长度的第二数组。
39.进一步,获取第二数组,其中所述第二数组的长度可以为64字节,其中,第二数组中每一字节都可以赋予同样的值,例如0x59,第二数组可以表示为:
40.{0x59,0x59,...,0x59,...,0x59}
41.可选地,本技术上述第二数组中字节的值为随机赋值,在其他实施方式中可以赋予其他值,此处不做具体限定。
42.s132,将第二数组和初始私钥中的部分字节进行逻辑运算以得到中间值,并将第二数组中的部分字节替换为中间值。
43.进一步,将将第二数组和初始私钥中的部分字节进行异或运算,具体地将第二数组和初始私钥(第一数组)的前20个字节中每一个字节都进行异或运算,且第二数组中剩余的字节不变。
44.具体地,初始私钥所代表的第一数组中的第一个字节0x48和第二数组中的第一个byte 0x59进行异或运算得到结果0x11,即第二数组和初始私钥的中间值,并将这个中间值代替装进第二数组的第一个字节。以此类推,分别将第一数组即第二数组中的前20个字节进行异或运算,得到的中间值替换第二数组的前20个字节,且第二数组后面的剩余字节保持不变,从而得到第二数组的扩展数组。
45.s133,将实时时间附加到扩展值数组的右侧,以得到第三数组。
46.可选地,本技术中实时时间的长度可以为8字节,进一步将该实时时间附加到64字节的扩展数组中最后一个元素的右侧。具体地,本技术中实时时间从2000年1月1日0时0分0秒开始算,到现在时刻的总共分钟数目minute,这个分钟数目minute再除以30,得到一个30分钟的时间窗口,更换电芯的上电动作必须在这个唯一的确定的30分钟窗口内进行,超过这个30分钟窗口密码就自动作废。如此能够有效避免大规模非授权的非法锂电芯组的非法代换。
47.举例来说,比如现在时间是2021年1月12日,从2000年1月1日0时0分0秒到现在共有7682*24*60=11062080分钟,即minute=11062080,除以30得到368736这个数。其中,368736这个数就是每30分钟的时间窗口的唯一id。进一步,将368736这个十进制转成hex16进制:0x05a060,这是3个字节:0x05,0xa0,0x60,不够8个字节bytes,则需要在前面进行循环复制,其中所谓循环复制就是将这3个字节重复后粘贴在前面直到补足8个字节,具体地补足的8个字节结果如下:
48.0xa06005a06005a060
49.进一步,将这8个字节bytes附加在扩展值数组的最右边,得到了一个72个字节的数组,即第三数组。
50.上述实施方式中,通过高精度时钟模块产生的real time(实时时间)来作为种子,最后产生一个10位的数字和字母组合来作为初始私钥的表象密码,最后通过表象密码的对比来间接实现初始私钥的对比认证,有效的保护了初始私钥。
51.s134,将第三数组进行散列运算,以得到第四数组。
52.请进一步结合图4,图4为本技术步骤s134一实施方式的流程示意图,如图4,步骤s134进一步包括如下子步骤:
53.s1341,形成一辅助元素数组,并根据辅助元素数组计算第一整数。
54.可选地,形成一辅助2元素数组cnt[2],其中辅助元素数组中的元素初始值都是0。然后,根据该辅助元素数组计算第一整数j=cnt[0]》》3&63。
[0055]
s1342,将第三数组进行移位运算。
[0056]
进一步,将72个字节的第三数组进行移位运算72《《3=576,并将移位运算的结果和第一整数j=cnt[0]原本的值相加,并将相加的结果赋值给cnt[0]。其中,如果cnt[0]的值小于72《《3,将cnt[1]的值自动增加1。可以理解的是,第一次运算时cnt[0]初始值为0,所以cnt[0]和72《《3相等,条件不成立。随着后续继续运算,会出现cnt[0]的值小于或大于72《《3的情况产生。进一步,将cnt[1]的值增加72》》29,注意后面这个数值是很大,因为第三数
组向左移位了29个位置。
[0057]
s1343,判断进行移位运算后的第三数组是否大于预设数值。
[0058]
进一步,判断j+72是否大于预设数值63,若大于则执行步骤s1344。
[0059]
s1344,根据第一整数计算得到第二整数。
[0060]
进一步,若j+72大于预设数值63,则根据第一整数j产生第二整数i,其中,第二整数的初始值设为i=64-j。
[0061]
s1345,形成一缓冲数组,缓冲数组中包括第二整数个第三数组的元素。
[0062]
可选地,形成一缓冲数组buffer[84],本技术实施例中缓冲数组的长度为84个字节bytes。进一步,将72字节长度的第三数组中的部分字节复制到缓冲数组buffer[84]中。需要注意的是,本技术中在将第三数组中的字节复制到缓冲数组的时候,缓冲数组接受第三数组中的第一个元素,位置为缓冲数组的第j个位置。当然也不是完全将第三数组中的字节全部复制,只需要复制第三数组中的前i个元素,即本技术缓冲数组中至少包括i(第二整数)个第三数组中的元素。
[0063]
s1346,形成第一状态数组,并根据第一状态数组及缓冲数组计算以得到第四数组。
[0064]
进一步,形成第一状态数组state[5],所述第一状态数组中的元素初始值均为0。将第一状态数组state[5]和步骤s1345中的缓冲数组buffer[84]进行计算以得到第四数组。
[0065]
具体地,为方便描述第一状态数组state[5]中的五个元素可以依次为s1,s2,,s3,s4,s5。其次,形成一计算数组space[64],所述计算数组space[64]包含64个元素。进一步,将缓冲数组buffer[84]中起始的部分字节复制到计算数组space中,本技术实施例中将缓冲数组buffer[84]中到前64个字节复制到计算数组中。
[0066]
进一步,使用c++的库函数_rotl,所述库函数_rotl的原型是在cstdlib头文件中。其中,函数_rotl的作用是循环左移,即将一个数的二进制最高位移动到最低位,其他位置普通左移即可。然后,采用函数_rotl进行32bits(32位)的整数的循环左移运算。在进行循环左移运算之前需要利用函数_rotl建立两个辅助函数:
[0067]
第一个辅助函数assist1:
[0068]
可选地,assist1辅助函数算法是作用在一个32bits变量上。具体地,一个32bits位的变量x,首先循环左移24位,得到_rotl(x,24),然后将_rotl(x,24)从最低位算起的第二个字节和第四个字节保持原值,将其它字节清0,再循环左移8位,得到_rotl(x,8)。进一步,将_rotl(x,8)从最低位算起的第一个字节和第三个字节保持原值,而将其它字节清0。最后将以上2个结果即_rotl(x,24)和_rotl(x,8)拼合起来,即取第一个结果的第二个字节和第四个字节,取第二个结果的第一个字节和第三个字节,拼合合并起来,组成一个有全部4个字节的32位整数值。
[0069]
第二个辅助函数assist2:
[0070]
可选地,本技术实施例中第二个辅助函数assist2和第一辅助函数assist1算法不同,第二个辅助函数assist2作用在一个数组或者向量上的。
[0071]
具体地,一个数组阵列(array),设置其元素的index作为自变量,该自变量可以命名为idx,首先将自变量idx取低字节,即idx&0xf,然后用idx&0xf作为新的index,取数组的
一个元素,可以命名element1。进一步,然后将idx加2,将加2后的变量取低字节,即(idx+2)&0xf,然后用(idx+2)&0xf这个值作为新的index,取数组的一个元素,这里暂时命名element2。
[0072]
进一步,将idx加8,给加法后的和取低字节,即(idx+8)&0xf,然后用(idx+8)&0xf这个值作为新的index,取数组的一个元素,这里暂时命名element3。
[0073]
进一步,将idx加13,给加法后的和取低字节,即(idx+13)&0xf,然后用(idx+13)&0xf这个值作为新的index,取数组的一个元素,这里暂时命名element4。
[0074]
进一步,将四个元素element1、element2、element3、element4进行异或运算,即:
[0075]
element1^element2^element3^element4
[0076]
异或运算得到的结果进行循环左移1位,即:
[0077]
_rotl(element1^element2^element3^element4,1)
[0078]
最后,将左移后的值赋值给数组阵列(array)的元素[idx&0xf],即idx取低4位作为新的index,到数组array的对应元素。
[0079]
可以理解的是,第二辅助函数assist2是一个自变量是一个数组,因变量是一个数组的函数。
[0080]
更进一步地,以上述的第一辅助函数assist1和第二辅助函数assist2为基础构造一公共指令及转换函数,其中,所述转换函数包括选择参数,所述选择参数用于选择所述第一辅助函数或所述第二辅助函数对所述计算数组进行计算,且具体如下:
[0081]
其中,公共指令common为:
[0082]
+_rotl(v,5);w=_rotl(w,30);
[0083]
需要注意的是,这里的“公共指令”,由2个部分构成,第一个部分本质上其实是一个多项式的“项”:+_rotl(v,5),它的自变量是v,且自变量v做了循环移位运算后,前面的“+”号让其和前面的任何部分做和的运算。第二个部分直接是一个c语言语句指令,是将w做循环移位左移30bits的运算。其中,第一个部分和第二个部分用c语言的分号分开。进一步,之所以有“公共指令”,是因为这部分是几个转换函数的公共部分,每个转换函数的最后都有这相同的部分,因此本技术将公共指令专门提出来,能够让思路更加清晰。
[0084]
进一步,本技术实施例中构造了三个转换函数,具体如下:
[0085]
转换函数一_r_0_1:
[0086][0087]
以上是转换函数一的c语言函数原型,其中转换函数一有7个参数,其中u32代表32位无符号数数据类型,u8代表8位无符号数数据类型,即unsigned char,&表示这个参数是c++语言的参考,即参数传递本质上是用不可移动的指针类型来传递的。
[0088]
下面是函数体:
[0089][0090]
由上述函数体积可知,首先将函数参数x和y做按位异或运算,然后将结果和参数w做按位与运算,再将结果和参数y再做按位异或运算。其中,函数参数_0_1的类型是unsigned char(无符号数数据类型),即一个选择量,可以看作bool类型,根据_0_1的值来选择到底是按照第二辅助函数assist2还是按照第一辅助函数assist1来进行对计算数组space的计算。最后,将结果和前面的异或运算的结果相加,在加上一个常数0x5a827999。当然在其他实施方式中,也可以选择其他常数,此处不做具体限定。本技术中选择常数0x5a827999,是能够优化结果。再最后加上“公共指令common”,然后函数就返回了。
[0091]
转换函数二_r3为:
[0092]
[0093][0094]
进一步,为简化算法书写,本技术需要做几个c语言的预处理define,以下define预处理语句中的...和__va_args__是标准c,c++中的预处理宏可变数目宏参数。
[0095][0096]
进一步,做几个c语言预处理普通宏,如下:
[0097][0098]
上述基础工作完成后,利用上述能够简化并且清晰书写的方法,写出本技术的最核心算法,如下:
[0099]
[0100]
[0101]
[0102][0103]
最后,将上述的计算结果与第一状态数组中的相对应元素进行相加并替换原值,得到新的状态数组,即第四数组,如下:
[0104]
state[0]+=s1;state[1]+=s2;state[2]+=s3;state[3]+=s4;state[4]+=s5。
[0105]
s135,对第四数组进行抽象处理,以得到抽象数组。
[0106]
进一步,将计算得到的第四数组,即步骤s1346得到的新的状态数组state[0]+=s1;state[1]+=s2;state[2]+=s3;state[3]+=s4;state[4]+=s5进行abstract处理,得到一抽象数组,可以表示为unsigned char abstract[20],如此可以根据该抽象数组得到本技术的第一密钥。
[0107]
s136,根据抽象数组计算得到所述第一密钥。
[0108]
请进一步结合图5,图5为本技术步骤s136一实施方式的流程示意图,如图5,步骤s136进一步包括如下子步骤:
[0109]
s1361,获取抽象数组中的索引值。
[0110]
进一步,取出抽象数组unsigned char abstract[20]中最后一个元素的低4位作为索引值index,可以表示为:
[0111]
int index=abstract[20-1]&0xf。
[0112]
s1362,根据索引值计算中间量。
[0113]
根据索引值计算一暂时中间量tmpo,其表示为:
[0114]
u32 tmpo=(u32)(abstract[index]&0x7f)《《8*3
[0115]
|(u32)abstract[index+1]《《8*2
[0116]
|(u32)abstract[index+2]《《8*1
[0117]
|(u32)abstract[index+3]
[0118]
s1363,获取一初始ascii码数组,初始ascii码数组中包括10位元素。
[0119]
可选地,准备一ascii码数组,在所述ascii码数组中取一初始ascii码数组,其中,初始ascii码数组中包括10位元素,且每一元素的初始值为0,具体如下:
[0120]
char ascii[10]={0}。
[0121]
s1364,根据中间量计算一数字n。
[0122]
进一步,为缩减最后得到的第一密钥的字节位数,步骤s1364中可以根据中间量计算一数字n,具体为:
[0123]
u32 n=tmpo%1000000。
[0124]
s1365,获取和数字n对应的ascii字符,并将ascii字符放置入初始ascii码数组中,以得到第一密钥。
[0125]
进一步,将步骤s1354中计算得到的n用ascii字符表示出来,即:
[0126]
to_ascii(n,ascii);
[0127]
可以理解的是,因为n用ascii字符表示出来是16进制,所以同时含有数字和字母
组合。故获取和数字n对应的ascii字符,并将ascii字符放置入初始ascii码数组中,从而得到第一密钥。本技术中第一密钥为10位的ascii码数组,且可以用这个10位的ascii码数组来进行bms电路板和电芯的authentic验证配对。
[0128]
s200,接收来自上位机的第二密钥。
[0129]
可选地,接收来自上位机的第二密钥。每次bms系统电路板和电芯组装上电时候,当最高节电芯接入时候,必须在一个窗口时间(比如1分钟内),通过上位机连接can总线来提供第二密钥,即10位的字母数字组合。其中,上位机的第二密钥都必须由bms厂家实时提供,具体可以有2种方式来提供这个10位的字母数字组合密码。
[0130]
a.通过电话或者网络(比如)来由bms厂家传递到电池组装现场。或者由bms厂家直接到电池组装现场进行现场指导。
[0131]
b.上位机可以通过https从bms厂家服务器远程fetch加密过的10位的字母数字组合。
[0132]
s300,判断第一密钥和第二密钥是否匹配。
[0133]
进一步,当bms系统电路板的mcu接收到这个从上位机通过can总线传过来的第二密钥(10位的字母数字组合)后,需要和自己实时计算的第一密钥进行匹配,若匹配成功,则表示验证成功即电芯为经过授权的电芯,则电芯和bms系统全体可以顺利正常工作。
[0134]
可以理解的是,因为第一密钥中附加有实时的时间信息参做比对,所以只要过了这个时间,密码就作废,如此能够使得仿造者无法大规模应用破解法来生产未经授权的代用电池,有效解决了bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权。
[0135]
s400,建立和电池的连接。
[0136]
进一步,当第一密钥和第二密钥匹配成功,则建立和电池的连接,电芯和bms系统全体可以顺利正常工作。反之,若第一密钥和第二密钥不匹配,则表示电池的电芯为未经过授权的电芯,则结束流程。
[0137]
上述实施方式中,通过计算电路板的第一密钥,且第一密钥包括实时时间信息,在接入电芯时通过接收通过上位机传输过来的第二密钥,结合实时时间信息将第一密钥和第二密钥进行比对,能够使得仿造者无法大规模应用破解法来生产未经授权的代用电池,有效解决了bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权。
[0138]
图6示出了本技术bms系统电池认证装置实施例的结构示意图,如图6,本技术提供的装置100包括计算模块110、接收模块120、判断模块130以及建立模块140。
[0139]
其中计算模块110用于计算电路板的第一密钥,所述第一密钥包括实时时间信息。
[0140]
接收模块120用于接收来自上位机的第二密钥。
[0141]
判断模块130用于判断所述第一密钥和所述第二密钥是否匹配。
[0142]
建立模块140用于当所述第一密钥和所述第二密钥若匹配时,建立和所述电池的连接。
[0143]
上述实施方式中,通过计算电路板的第一密钥,且第一密钥包括实时时间信息,在接入电芯时通过接收通过上位机传输过来的第二密钥,结合实时时间信息将第一密钥和第二密钥进行比对,能够使得仿造者无法大规模应用破解法来生产未经授权的代用电池,有效解决bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权。
[0144]
图7示出了本技术bms系统电池认证设备实施例的结构示意图,本发明具体实施例
并不对设备的具体实现做限定。
[0145]
如图7所示,该bms系统电池认证设备可以包括:处理器(processor)402、通信接口(communications interface)404、存储器(memory)406、以及通信总线408。
[0146]
其中:处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。处理器402,用于执行程序410,具体可以执行上述用于bms系统电池认证方法实施例中的相关步骤。
[0147]
具体地,程序410可以包括程序代码,该程序代码包括计算机可执行指令。
[0148]
处理器402可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。bms系统电池认证设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
[0149]
存储器406,用于存放程序410。存储器406可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0150]
程序410具体可以被处理器402调用bms系统电池认证设备执行以下操作:
[0151]
计算所述电路板的第一密钥,所述第一密钥包括实时时间信息;接收来自所述上位机的第二密钥;判断所述第一密钥和所述第二密钥是否匹配;若匹配,则建立和所述电池的连接。
[0152]
本实施例中的各步骤的具体实施方式请参阅上述实施例中步骤s100至步骤s400的具体描述,此处不再赘述。
[0153]
上述实施方式中,通过计算电路板的第一密钥,且第一密钥包括实时时间信息,在接入电芯时通过接收通过上位机传输过来的第二密钥,结合实时时间信息将第一密钥和第二密钥进行比对,能够使得仿造者无法大规模应用破解法来生产未经授权的代用电池,有效解决bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权。
[0154]
参阅图8,图8是本技术提供的计算机可读存储介质实施例的示意框图,本实施例中的计算机可读存储介质存储有计算机程序310,该计算机程序310能够被处理器执行以实现上述任一实施例中的bms系统电池的认证方法。
[0155]
可选的,该可读存储介质可以是u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0156]
综上所述,本领域技术人员容易理解,本技术提供一种bms系统电池的认证方法、装置、设备及存储介质,通过计算电路板的第一密钥,且第一密钥包括实时时间信息,在接入电芯时通过接收通过上位机传输过来的第二密钥,结合实时时间信息将第一密钥和第二密钥进行比对,能够使得仿造者无法大规模应用破解法来生产未经授权的代用电池,有效解决了bms系统电池的认证原装电池问题,防止非法软硬件盗版侵权。
[0157]
以上所述仅为本技术的实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
技术特征:
1.一种bms系统电池的认证方法,其特征在于,所述认证方法包括:计算电路板的第一密钥,所述第一密钥包括实时时间信息;接收来自上位机的第二密钥;判断所述第一密钥和所述第二密钥是否匹配;若匹配,则建立和所述电池的连接。2.根据权利要求1所述的认证方法,其特征在于,所述计算电路板的第一密钥,进一步包括:获取所述电路板的初始私钥,所述初始私钥为预设字节长度的第一数组;获取所述电路板上高精度时钟的实时时间;根据所述初始私钥及所述实时时间得到所述电路板的第一密钥。3.根据权利要求2所述的认证方法,其特征在于,所述根据所述初始私钥及所述实时时间得到所述电路板的第一密钥,进一步包括:获取预设字节长度的第二数组;将所述第二数组和所述初始私钥中的部分字节进行逻辑运算以得到中间值,并将所述第二数组中的所述部分字节替换为所述中间值,以得到所述第二数组的扩展数组;将所述实时时间附加到所述扩展数组的右侧,以得到第三数组;将所述第三数组进行散列运算,以得到第四数组;对所述第四数组进行抽象处理,以得到抽象数组;根据所述抽象数组计算得到所述第一密钥。4.根据权利要求3所述的认证方法,其特征在于,所述将所述第三数组进行散列运算,以得到第四数组,进一步包括:形成一辅助元素数组,并根据所述辅助元素数组计算第一整数;将所述第三数组进行移位运算;判断进行移位运算后的所述第三数组是否大于预设数值;若大于,则根据所述第一整数计算得到第二整数;形成一缓冲数组,所述缓冲数组中包括第二整数个所述第三数组的元素;形成第一状态数组,并根据所述第一状态数组及所述缓冲数组计算以得到所述第四数组。5.根据权利要求1所述的认证方法,其特征在于,所述形成第一状态数组,并根据所述第一状态数组及所述缓冲数组计算以得到第四数组,进一步包括:形成一计算数组,并将所述缓冲数组中的部分起始字节复制进所述计算数组中;形成第一辅助函数及第二辅助函数;根据所述第一辅助函数及所述第二辅助函数构造公共指令以及转换函数,其中,所述转换函数包括选择参数,所述选择参数用于选择所述第一辅助函数或所述第二辅助函数对所述计算数组进行计算;根据所述转换函数对所述计算数组进行计算,将计算结果与第一状态数组中的对应的元素进行相加并替换原值以得到第四数组。6.根据权利要求1所述的认证方法,其特征在于,所述根据所述抽象数组计算得到所述第一密钥,进一步包括:
获取所述抽象数组中的索引值;根据所述索引值计算中间量;获取一初始ascii码数组,所述初始ascii码数组中包括10位元素;根据所述中间量计算一数字n;获取和所述数字n对应的ascii字符,并将所述ascii字符放置入所述初始ascii码数组中,以得到所述第一密钥。7.根据权利要求1所述的认证方法,其特征在于,所述第一密钥及所述第二密钥为十位的数字和字母的组合。8.一种bms系统电池的认证装置,其特征在于,所述装置包括:计算模块,用于计算所述电路板的第一密钥,所述第一密钥包括实时时间信息;接收模块,用于接收来自所述上位机的第二密钥;判断模块,用于判断所述第一密钥和所述第二密钥是否匹配;建立模块,用于当所述第一密钥和所述第二密钥若匹配时,建立和所述电池的连接。9.一种bms系统电池的认证设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7任意一项所述的bms系统电池的认证方法的操作。10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令在设备/装置上运行时,使得bms系统电池的认证设备/装置执行如权利要求1-7任意一项所述的bms系统电池的认证方法的操作。
技术总结
本申请提供了一种BMS系统电池的认证方法、装置、设备及存储介质,认证方法包括:计算电路板的第一密钥,所述第一密钥包括实时时间信息;接收来自上位机的第二密钥;判断所述第一密钥和所述第二密钥是否匹配;若匹配,则建立和所述电池的连接。方本申请能够有效解决BMS系统电池的认证原装电池问题,防止非法软硬件盗版侵权。硬件盗版侵权。硬件盗版侵权。