一种提升兼容性的数字签名生成方法及系统技术方案

技术编号:13605591 阅读:88 留言:0更新日期:2016-08-28 04:24
本发明专利技术涉及一种提升兼容性的数字签名生成方法及系统,本发明专利技术中通过获取与源数据对应的统一URL编码字符串,并根据所述统一URL编码字符串和密钥生成数字签名的方法保证了数字签名的兼容性,本发明专利技术通过对各种URL编码环境进行辨识和对于待编码字符串进行均一化处理,解决了在不同编码环境下URL编码结果不一致的问题,进而保证了数字签名与URL的编码环境无关;通过提供密钥生成方法和数字签名生成方法,从而在提升数字签名兼容性的基础上还能够提升数字签名的安全性;此外,本发明专利技术中对于待编码字符串的均一化处理方法还能够为跨平台、跨语言使用URL编码的相关应用领域提供技术支持。

【技术实现步骤摘要】

本专利技术涉及网络安全领域,具体涉及一种提升兼容性的数字签名生成方法及系统
技术介绍
数字签名是对信息的发送者发送信息真实性的一个有效证明,具有完整性和不可抵赖性,是网络安全领域最为常用的一项维护网络安全的技术。通常对原始数据进行某种运算后,即可得到与原始值唯一对应的数字签名,数字签名能够有效地验证原始数据是否被修改。在数据签名生成过程中,通常需要用到URL编码技术,所谓URL编码技术也被称之位百分号编码,是指将指定的可见字符转换为对应的百分号编码,以便数据传输使用时避免有些字符引起的歧义。在各种开发语言中使用URL编码技术得到的结果并不是完全相同,因此在各语言的环境中使用URL编码技术后,得到的数字签名也不完全相同,从而引发关于数字签名的兼容性问题。以Microsoft.NET平台为例,这种开发环境的URL编码器httpUtility.URLEncode会将字符‘=’编码成‘%3d’,而不是符合国际标准RFC3986定义的%3D,在这种开发环境下直接获得的URL编码与国际标准不一致会导致数字签名不能通过验证;以JAVA开发平台为例,这种开发环境的URL编码器java.net.URLEncoder对字符“*”不能编码,由于国际标准中规定了“*”必须编码,因此若需要进行URL编码的源字符串中存在中“*”,会导致生成的签名不能通过验证;此外,某些语言的URL编码方法会把“空格”编码为“+”,实际上国际标准中规定应该编码为“%20”。可见,不同的编码环境造成了编码结果的显著差异,而编码结果的一致性是保证数字签名的有效性和兼容性的前提,而目前现有技术中尚上不存在能够圆满自适应地解决数字签名兼容性的技术方案。
技术实现思路
为了解决上述技术问题,本专利技术提出了一种提升兼容性的数字签名生成方法及系统,通过对各种URL编码环境进行辨识和对于待编码字符串进行均一化处理,解决不同编码环境下URL编码结果不一致的问题,从而保证数字签名的兼容性。本专利技术是以如下技术方案实现的,一种提升兼容性的数字签名生成方法,包括:根据源数据获取与所述源数据对应的统一URL编码字符串,所述统一URL编码字符串包括均一化子串,所述均一化子串由所述源数据中的元素进行均一化编码生成,所述均一化子串符合URL编码规范并且与所述源数据的URL编码环境无关;获取密钥,并根据所述源数据对应的统一URL编码字符串和所述密钥生成数字签名。优选的,所述均一化编码方法包括:对所述元素进行编码,生成在所述源数据的URL编码环境下的URL编码字符串;将所述URL编码字符串中与所述URL编码规范不兼容的字符替换为与所述URL编码规范兼容的字符,获得与所述元素对应的均一化子串。优选的,所述源数据包括网络请求中的请求方式、URL路径和参数,所述根据所述源数据获取所述源数据对应的统一URL编码字符串包括:获取第一字符串,所述第一字符串为与所述URL路径对应的均一化子串;获取第二字符串,所述第二字符串为与所述参数对应的均一化子串;将所述网络请求中的请求方式、所述第一字符串和所述第二字符串之间使用字符“&”依次进行连接,获得与所述源数据对应的统一URL编码
字符串。优选的,所述根据所述源数据对应的统一URL编码字符串和所述密钥生成所述数字签名包括:获取密钥字符串,所述密钥字符串由所述密钥和拼接字符“&”构成;将所述密钥字符串和所述源数据对应的统一URL编码字符串分别作为散列函数的参数进行散列运算,将运算结果作为所述数字签名。优选的,所述密钥的长度为M,所述密钥的生成方法包括:选择参与构建密钥的字符和/或字符串;将所述字符和/或字符串进行拼接,形成长度为L的目标字符串;每一次抽取一个目标字符,共抽取M次;将M个所述目标字符依次拼接构成密钥。优选的,每一次抽取目标字符均包括:随机生成一个0到L-1之间的整数N,L为所述目标字符串的长度;将所述目标字符串中的第N个位置的字符作为目标字符。一种提升兼容性的数字签名生成系统,包括统一URL编码字符串获取模块、密钥获取模块和数字签名获取模块,所述统一URL编码字符串获取模块用于根据源数据获取所述源数据对应的统一URL编码字符串,所述统一URL编码字符串包括均一化子串,所述均一化子串由所述源数据中的元素进行均一化编码生成,所述均一化子串符合URL编码规范并且与所述源数据的URL编码环境无关,所述密钥获取模块用于获取密钥,所述数字签名获取模块用于根据与所述源数据对应的统一URL编码字符串和所述密钥生成所述数字签名。优选的,所述统一URL编码字符串获取模块包括均一化子串获取子模块,所述均一化子串获取子模块包括编码单元和均一化处理单元,所述编码单元用于对所述源数据的元素进行编码,生成在所述源数据的URL编码环境下的URL编码字符串;所述均一化处理单元用于将所述URL编码字符串中与所述URL编码规范不兼容的字符替换为与所述URL编码规范兼容的字符,获得与所述元素对应的均一化子串。优选的,所述源数据包括网络请求中的请求方式、URL路径和参数,所述统一URL编码字符串获取模块还包括第一字符串获取子模块、第二字符串获取子模块和统一URL编码字符串生成子模块,所述第一字符串获取子模块用于获取第一字符串,所述第一字符串为与所述URL路径对应的均一化子串,所述第二字符串获取子模块用于获取第二字符串,所述第二字符串为与所述参数对应的均一化子串,所述统一URL编码字符串生成子模块用于将所述网络请求中的请求方式、所述第一字符串和所述第二字符串之间使用字符“&”依次进行连接,获得与所述源数据对应的统一URL编码字符串。优选的,所述数字签名获取模块包括密钥字符串获取子模块和数字签名生成子模块,所述密钥字符串获取子模块用于将所述密钥和字符“&”拼接构成密钥字符串,所述数字签名生成子模块用于将所述密钥字符串和所述源数据对应的统一URL编码字符串分别作为散列函数的参数进行散列运算并将运算结果作为所述数字签名。优选的,所述密钥获取模块包括选择子模块、拼接子模块、目标字符抽取子模块和密钥生成子模块,所述选择子模块用于选择参与构建密钥的字符和/或字符串,所述拼接子模块用于将所述字符和/或字符串进行拼接,形成长度为L的目标字符串,所述目标字符抽取子模块用于从所述目标字符串中抽取目标字符,每一次抽取一个目标字符,共抽取M次,所述密钥生成子模块用于依次拼接M个所述目标字符构成密钥。本专利技术的有益效果是:本专利技术提出了一种提升兼容性的数字签名生成方法及系统,通过对各种URL编码环境的辨识和对于待编码字符串进行均一化处理,解决不同编码环境下URL编码结果不一致的问题,从而保证数字签名的兼容性,本专利技术还提供了密钥生成方法和数字签名生成方法,从而在提升数字签名兼容性的基础上还能够提升数字签名的安全性。此外,本专利技术中对于待编码字符串的均一化处理方法还能够为跨平台、跨语言使用URL编码的相关应用
领域提供技术支持。附图说明图1是实施例1中提供的提升兼容性的数字签名生成方法流程图;图2是实施例2中提供的均一化编码方法流程图;图3是实施例2中提供的统一URL编码字符串获取方法流程图;图4是实施例3中提供的密钥获取方法流程图;图5是实施例3中提本文档来自技高网
...

【技术保护点】
一种提升兼容性的数字签名生成方法,其特征在于,包括:根据源数据获取与所述源数据对应的统一URL编码字符串,所述统一URL编码字符串包括均一化子串,所述均一化子串由所述源数据中的元素进行均一化编码生成,所述均一化子串符合URL编码规范并且与所述源数据的URL编码环境无关;获取密钥,并根据所述源数据对应的统一URL编码字符串和所述密钥生成数字签名。

【技术特征摘要】
1.一种提升兼容性的数字签名生成方法,其特征在于,包括:根据源数据获取与所述源数据对应的统一URL编码字符串,所述统一URL编码字符串包括均一化子串,所述均一化子串由所述源数据中的元素进行均一化编码生成,所述均一化子串符合URL编码规范并且与所述源数据的URL编码环境无关;获取密钥,并根据所述源数据对应的统一URL编码字符串和所述密钥生成数字签名。2.根据权利要求1所述的一种提升兼容性的数字签名生成方法,其特征在于,所述均一化编码包括:对所述元素进行编码,生成在所述源数据的URL编码环境下的URL编码字符串;将所述URL编码字符串中与所述URL编码规范不兼容的字符替换为与所述URL编码规范兼容的字符,获得与所述元素对应的均一化子串。3.根据权利要求2所述的一种提升兼容性的数字签名生成方法,其特征在于,所述源数据包括网络请求中的请求方式、URL路径和参数,所述根据所述源数据获取所述源数据对应的统一URL编码字符串包括:获取第一字符串,所述第一字符串为与所述URL路径对应的均一化子串;获取第二字符串,所述第二字符串为与所述参数对应的均一化子串;将所述网络请求中的请求方式、所述第一字符串和所述第二字符串之间使用字符“&”依次进行连接,获得与所述源数据对应的统一URL编码字符串。4.根据权利要求3所述的一种提升兼容性的数字签名生成方法,其特征在于,所述根据所述源数据对应的统一URL编码字符串和所述密钥生成
\t所述数字签名包括:获取密钥字符串,所述密钥字符串由所述密钥和拼接字符“&”构成;将所述密钥字符串和所述源数据对应的统一URL编码字符串分别作为散列函数的参数进行散列运算,将运算结果作为所述数字签名。5.根据权利要求1所述的一种提升兼容性的数字签名生成方法,其特征在于,所述密钥的长度为M,所述密钥的生成方法包括:选择参与构建密钥的字符和/或字符串;将所述字符和/或字符串进行拼接,形成长度为L的目标字符串;每一次抽取一个目标字符,共抽取M次;将M个所述目标字符依次拼接构成密钥。6.根据权利要求5中所述的一种提升兼容性的数字签名生成方法,其特征在于,每一次抽取目标字符均包括:随机生成一个0到L-1之间的整数N,L为所述目标字符串的长度;将所述目标字符串中的第N个位置的字符作为目标字符。7.一种提升兼容性的数字签名生成系统,其特征在于,包括统一URL编码字符串获取模块、密钥获取模块和数字签名获取模块,所述统一URL编码字符串获取模块用于根据源数据获取所述源数据对应的统一URL编码字符...

【专利技术属性】
技术研发人员:龙付成
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1