一种加密、解密MAC地址的方法和装置
技术领域
本发明涉及生产中嵌入式软件版权控制领域,具体而言,涉及一种加密解密MAC地址的方法和装置。
背景技术
随着信息化的持续推进,互联网发展已上升为国家战略,作为互联网发展的基础设施,各级网络设备的需求量与日俱增,网络设备的生产加工也由传统的自产方式逐渐发展为代加工厂合作的方式,与此同时,需要一种可靠的嵌入式软件版权保护方法来保护嵌入式软件不被合作代加工厂非法利用。网络设备在生产时通常通过直接烧录方式将嵌入式软件存放在Flash器件中,然后再修改设备的MAC地址,如果通过明文修改MAC(Medium/Media Access Control,媒体访问控制)地址,软件可以被轻易的盗取、非法利用。对于上述情况,一般有两种方式可以保护嵌入式软件的版权:
1、软件所有者预先烧录Flash器件并修改好MAC地址,软件所有者向代加工厂提供已经烧录好且修改MAC后的Flash芯片。
2、在线授权,设备在启动后接入互联网,由软件所有者服务器端在线授权修改MAC地址。
上述两种方法各有缺点:第一种方法要求软件所有者预先烧录Flash芯片,放置Flash芯片到样机芯片座,上电运行修改MAC地址,取下Flash芯片,将芯片提供给代加工厂,增加了人力与时间成本;第二种方法要求设备接入互联网,存在安全隐患,且在无网络连接时无法使用,灵活性差、效率低。
鉴于上述缺点,本发明提供了一种加密解密MAC地址的方法和装置,可免除软件所有者烧录Flash和修改MAC地址的繁琐步骤,无需网络连接,能在保护软件版权的基础上,大大提高效率、安全性和灵活性。
发明内容
本发明所要解决的技术问题是:针对嵌入式系统网络设备,提供了一种加密、解密MAC地址的方法和装置,采用带自校验的密钥代替明文MAC地址,可有效防止设备MAC地址被私自修改。
为了解决上述技术问题,本发明采用了以下技术方案:
一种加密MAC地址的方法,包括以下步骤:
对所述MAC地址进行散列函数运算得到校验码,所述散列函数为基于MD5的MAC地址散列函数;
对MAC地址和校验码进行第一序列函数运算得到伪干扰码;所述第一序列函数运算,是指函数接受两个字符串输入Str1和Str2,将两个字符串中的每个字符按照预设位置序列重新排列输出;
对伪干扰码进行散列函数运算得到干扰码;
对MAC地址的前11位和干扰码进行异或运算得到特征码,所述异或运算为按照每字符做位异或计算并按十六进制格式输出;
对校验码、干扰码和特征码进行第二序列函数运算得到MAC密钥,所述第二序列函数运算是指函数接受三个字符串输入Str1、Str2、Str3,将三个字符串中的每个字符按照预设位置序列重新排列输出;
对上述MAC密钥进行解密的方法,包括以下步骤:
对所述MAC密钥进行第二序列函数逆运算得到校验码、干扰码和特征码;所述第二序列函数逆运算是指函数接受一个字符串输入Str1,按照预设位置取出字符并重新组合成三个字符串;
对干扰码和特征码进行异或运算得到MAC地址前11位,所述异或运算为按照每字符做位异或计算并按十六进制格式输出;
MAC地址前11位与十六进制码0~f分别结合组成16组待验证MAC地址;
16组待验证MAC地址分别进行散列函数运算得到16组待验证校验码,所述散列函数为基于MD5的MAC地址散列函数;
16组待验证校验码分别与校验码做匹配运算,匹配成功的一组校验码所对应的一组待验证MAC地址则为真实MAC地址。
所述MAC地址为12字节长度的十六进制格式,不区分大小写。
所述校验码、特征码、干扰码、伪干扰码、MAC密钥、MAC地址的前11位、待验证MAC地址、待验证校验码中的字符为十六进制小写格式。
一种加密解密MAC地址的装置,包括:
散列函数运算单元,用于对字符串进行MD5散列函数运算并输出;
第一序列函数运算单元,用于对MAC地址和校验码运算输出伪干扰码;所述第一序列函数运算,是指函数接受两个字符串输入Str1和Str2,将两个字符串中的每个字符按照预设位置序列重新排列输出;
第二序列函数运算单元,用于对校验码、特征码和干扰码运算输出MAC密钥;所述第二序列函数运算是指函数接受三个字符串输入Str1、Str2、Str3,将三个字符串中的每个字符按照预设位置序列重新排列输出;
异或运算单元,用于对两个字符串按照预设位置序列进行位运算并输出;
第二序列函数逆运算单元,用于对MAC密钥运算输出干扰码、特征码和校验码;所述第二序列函数逆运算是指函数接受一个字符串输入Str1,按照预设位置取出字符并重新组合成三个字符串;
还包括匹配运算单元;
所述散列函数运算单元,包含:MD5散列函数模块,用于对输入字符串进行MD5散列函数计算。
所述第一序列函数运算单元,包含:第一序列模块,用于存放固化的第一序列;运算模块,用于根据第一序列模块中的序列进行运算。
所述第二序列函数运算单元,包含:第二序列模块,用于存放固化的第二序列;运算模块,用于根据第二序列模块中的序列进行运算。
所述第二序列函数逆运算单元,包含:逆序列模块,用于存放固化的逆序列;逆运算模块,用于根据逆序列模块中的序列进行逆运算。
所述异或运算单元,包含:异或序列模块,用于存放固化的异或运算序列;异或运算模块,用于根据异或序列模块中的序列进行异或运算。
本发明的关键点在于,采用校验码、特征码、干扰码三者混合的方式对原字符串加密,即增加了密钥复杂度,密钥中又包含了用于还原的特征码,且装置中包含了三重预设位置序列与MD5单向散列函数运算,三重预设位置序列均固化在软件中,较难通过MAC密钥逆运算出MAC地址,保证MAC密钥的不可伪造特性。本发明应用于网络设备生产加工领域,利用网络设备生产时需要设置MAC地址并且MAC地址全球唯一性的特性,通过防止私自修改MAC地址可有效的保护嵌入式设备软件的版权,防止软件被非法复制。
在结合附图阅读本发明的实施方式的详细描述后,本发明的特点和优点将变得更加清楚。
附图说明
图1是本发明MAC地址加密方法原理图;
图2是本发明MAC密钥解密方法原理图;
图3是本发明MAC地址加密方法步骤图;
图4是本发明MAC密钥解密方法步骤图;
图5是本发明MAC地址加密装置图;
图6是本发明MAC密钥解密装置图;
图7是本发明散列函数运算单元原理图;
图8是本发明第一序列函数运算单元原理图;
图9是本发明第二序列函数运算单元原理图;
图10是本发明第二序列函数逆运算单元原理图;
图11是本发明异或运算单元原理图。
具体实施方式
下面以一个实施方式对本发明作进一步详细的说明,但应当说明,本发明的保护范围不仅仅限于此。
在网络设备生产过程中,往往会用明文MAC地址命令修改设备的MAC地址,为了保护嵌入式软件版权,需要对MAC地址进行加密处理后再设置并保存到设备;设备在运行时通过解密的方式获取真实的MAC地址。
如图1、图3所示,本发明的MAC地址加密方法如下:
步骤S01:对MAC地址进行散列函数运算得到校验码;
步骤S02:对MAC地址和步骤S01中的校验码进行第一序列函数运算得到伪干扰码;
步骤S03:对步骤S02中的伪干扰码进行散列函数运算得到干扰码;
步骤S04:对MAC地址的前11位和步骤S03中的干扰码进行异或运算得到特征码;
步骤S05:对步骤S01中的校验码、步骤S03中的干扰码和步骤S04中的特征码进行第二序列函数运算得到MAC密钥。
如图2、图4所示,本发明的MAC密钥解密方法如下:
步骤S11:对MAC密钥进行第二序列函数逆运算得到校验码、干扰码和特征码;
步骤S12:对干扰码和特征码进行异或运算得到MAC地址前11位;
步骤S13:将步骤S12中的MAC地址前11位与十六进制码0~f分别结合组成16组待验证MAC地址;
步骤S14:对步骤S13中的16组待验证MAC地址分别进行散列函数运算得到16组待验证校验码;
步骤S15:将步骤S14中16组待验证校验码分别与步骤S11中的校验码做匹配运算,匹配成功的一组校验码所对应的步骤S13中的一组待验证MAC地址则为真实MAC地址。
如图5-6所示,本发明的一种加密解密MAC地址的装置,包括:
散列函数运算单元,用于对字符串进行MD5散列函数运算并输出;
第一序列函数运算单元,用于对MAC地址和校验码运算输出伪干扰码;
第二序列函数运算单元,用于对校验码、特征码和干扰码运算输出MAC密钥;
异或运算单元,用于对两个字符串按照预设位置序列进行位运算并输出;
第二序列函数逆运算单元,用于对MAC密钥运算输出干扰码、特征码和校验码;
匹配运算单元,用于对两个字符串做完全匹配运算。
如图7-11所示,所述散列函数运算单元包含:MD5散列函数模块,用于对输入字符串进行MD5散列函数计算。所述第一序列函数运算单元包含:第一序列模块,用于存放固化的第一序列;运算模块,用于根据第一序列模块中的序列进行运算。所述第二序列函数运算单元包含:第二序列模块,用于存放固化的第二序列;运算模块,用于根据第二序列模块中的序列进行运算。所述第二序列函数逆运算单元包含:逆序列模块,用于存放固化的逆序列;逆运算模块,用于根据逆序列模块中的序列进行逆运算。所述异或运算单元包含:异或序列模块,用于存放固化的异或运算序列;异或运算模块,用于根据异或序列模块中的序列进行异或运算。
具体实施方法如下:
上述加密和解密方法和装置中包含MAC地址、校验码、特征码、干扰码、伪干扰码、MAC密钥、MAC地址前11位、16组MAC地址、16组待验证校验码共9个字符串;包含散列函数运算、第一序列函数运算、第二序列函数运算、异或运算、第二序列函数逆运算、匹配运算共6个运算单元。
散列函数运算:采用基于MD5散列函数的运算单元,检查输入的合法性,进行MD5运算并输出。
第一序列函数运算:接受两个字符串输入Str1和Str2,将两个字符串中的每个字符按照预设位置序列重新排列输出。比如abc、123两个字符串按照预设位置序列[000111]重新排列输出为abc123。
第二序列函数运算:接受三个字符串输入Str1、Str2、Str3,将三个字符串中的每个字符按照预设位置序列重新排列输出。比如abc、123、789三个字符串按照预设位置序列[012012012]重新排列输出为a17b28c39。
异或运算:接受两个字符串输入Str1、Str2,将两个字符串字符按照预设位置进行位异或运算后并以十六进制输出。比如abc、123456两个字符串按照预设位置序列[325]进行位运算,即abc与123456的第3、2、5个字符即436每个字符按位运算并以十六进制输出得到555155。
第二序列函数逆运算:接受一个字符串输入Str1,按照预设位置取出字符并重新组合成三个字符串。比如a17b28c39按照预设位置序列[012012012]输出abc、123、789三个字符串。
匹配运算:输入两个字符串Str1、Str2做完全匹配运算,匹配成功则输出该字符串Str1。比如abc与abc做匹配运算输出abc;abc与123做匹配运算输出匹配失败。
下面以MAC地址305a3a0442ce为例进行详细说明。
MAC地址加密:
1、MAC地址305a3a0442ce通过散列函数运算得出校验码66e6c43d07642399ab95157507a47c81。
2、MAC地址与校验码通过第一序列函数运算得到伪干扰码66e6c43d07642399ab95157507a47c81305a3a0442ce。
3、伪干扰码通过散列运算得出干扰码43c559c458d46f8a9651df17333e6108。
4、MAC地址与干扰码通过异或运算得到特征码0a0400540752050c015100。
5、校验码、干扰码与特征码通过第二序列函数运算得到MAC密钥06a6e0436c4c340d057056440253799592abc09514575550087ac40175c18001。MAC密钥解密:
1、MAC密钥
06a6e0436c4c340d057056440253799592abc09514575550087ac40175c18001通过第二序列函数逆运算得到校验码66e6c43d07642399ab95157507a47c81、干扰码43c559c458d46f8a9651df17333e6108、特征码0a0400540752050c015100。
2、干扰码与特征码通过异或运算得到MAC地址前11位305a3a0442c。
3、MAC地址前11位与十六进制0~f组合成16组MAC地址305a3a0442c0、305a3a0442c1、305a3a0442c2、305a3a0442c3、305a3a0442c4、305a3a0442c5、305a3a0442c6、305a3a0442c7、305a3a0442c8、305a3a0442c9、305a3a0442ca、305a3a0442cb、305a3a0442cc、305a3a0442cd、305a3a0442ce、305a3a0442cf。
4、16组MAC地址通过散列函数运算得到16组待验证校验码4c60221025d4e621a4735ed7322cc566、3e75586f89d4fad17826b8abef469794、5299c8332d4c0ca65b3435c5ee385344、587497edd97f646ada4c2e2413ce8ea6、7354ec5fb1e1e0478c01b519b11531ae、915fb484a260af9c3f5c6763a5da582c、110cd2a409cf0fc3799c9d221df0a905、a1a0eae8e12183175d36254dd1e4be22、979a2a28332f98081051bb86ae2ecb45、c172b019acd5d351a43b2d8aa488c003、3e56e2d68d7a99da78c2eb77a2bc7236、7dca0f93f0fd20ef90ac63325895ea0c、b4df1103e72ff1c822380e45c93ede10、2c3d71ff940bd0c6bd1e39b36746c417、66e6c43d07642399ab95157507a47c81、66be4decdd5f1359a9fa3100c0236268。
5、将16组待验证校验码分别与校验码做匹配运算,成功匹配第15组待验证校验码,即得到真实MAC地址为305a3a0442ce。
以上对本发明的具体实施实例做了详细描述,但本发明并不限制于以上描述的具体实例,其仅作为范例。因此,在不脱离本发明的原则和范围内作出的均等变换和修改,都应涵盖在本发明的范围内。
虽然结合附图描述了本发明的实施方式,但是本领域的技术人员可以在所附权利要求的范围之内作出各种变形或修改,只要不超过本发明的权利要求所描述的保护范围,都应当在本发明的保护范围之内。