发明名称 一种单证真伪鉴别的方法
摘要 本发明涉及一种单证真伪鉴别的方法。现有单证的加密方法存在一定的不足。本发明方法首先获取单证的要素数据,对单证的要素数据进行解析和预处理;设定四个长为8位的整型数并赋值,对所取得的I0分组进行MC计算,再对所取得的I4分组进行MC计算,在字符串的头部加上单证开具方和接受方的编码,生成12个字符的ASCII单证查询码;将单证查询码打印或书写于单证的空白位置,将单证要素和单证查询码插入开具方或者中立第三方的数据表供查询;接受方通过单证查询码鉴别单证的真伪。本发明方法能够从单证要素生成合适长度的查询码,便于查询中使用。本发明方法使用的MC运算过程安全。本发明实现简单、适于查询。
申请公布号 CN101739748A 申请公布日期 2010.06.16
申请号 CN200910154505.2 申请日期 2009.11.12
申请人 浙江浙科信息技术有限公司 发明人 吴惠良
分类号 G07D7/02(2006.01)I 主分类号 G07D7/02(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 一种单证真伪鉴别的方法,其特征在于该方法包括以下步骤:步骤(1)、获取单证的要素数据,所述的要素数据为单证的开具方、接受方、标的、数量和金额;步骤(2)、对单证的要素数据进行解析和预处理;所述的解析方法为:将开具方、接受方、标的、数量和金额要素数据按照GBK标准进行编码,将编码所形成的信息按照开具方、接受方、标的、数量、金额的顺序组装成一条消息字节串;所述的预处理方法为:首先对字节串长度末尾进行填充,使字节串位长度为128位的整数倍,填充位数为1~127位,填充的首位为数字1,末位为数字1,首位与末位的其他位置为0;然后将填充后长度为128的整数倍的字节串按128位单位进行分组,获得L个分组,分别表示为I0,I1,…IL-1,其中L=填充后字节串长度/128;步骤(3)、设定四个长为8位的整型数I(0),I(1),I(2),I(3),并赋值,使得I(0)=0X01,I(1)=0X23,I(2)=0X45,I(3)=0X67;对步骤(2)所取得的I0分组进行MC计算;所述的MC计算包括四轮运算,各轮逻辑函数不同,分别为A(X,Y,Z)、B(X,Y,Z)、C(X,Y,Z)和D(X,Y,Z);A(X,Y,Z)=(X|Y)&(X|(-Z))B(X,Y,Z)=(X|Z)&(Z|(-Y))C(X,Y,Z)=X&X&ZD(X,Y,Z)=X^Y^Z其中,&表示与,|表示或,-表示非,^表示异或;第一轮运算如下:将I(0)临时保存为变量II(0),I(1)保存为变量II(1),I(2)保存为变量II(2),I(3)保存为变量II(3);II(0)=I(0)II(1)=I(1)II(2)=I(2)II(3)=I(3)本轮的运算规则以[I(0)I(1)I(2)I(3)k s]为例来进行,I(0)=I(1)+((I(0)+(A(I(1),I(2),I(3))+X[k])<<<s)其中X[k]表示分组中的第k个字节(0≤k≤15),<<<s表示循环右移s位,进行16次循环[I(0)I(1)I(2)I(3) 0 1][I(3)I(0)I(1)I(2) 1 2][I(2)I(3)I(0)I(1) 2 3][I(1)I(2)I(3)I(0) 3 4][I(0)I(1)I(3)I(2) 4 5][I(3)I(0)I(1)I(2) 5 6][I(2)I(3)I(0)I(1) 6 7][I(1)I(2)I(3)I(0) 7 8][I(0)I(1)I(3)I(2) 8 9][I(3)I(0)I(1)I(2) 9 10][I(2)I(3)I(0)I(1) 10 11][I(1)I(2)I(3)I(0) 11 12][I(0)I(1)I(3)I(2) 12 13][I(3)I(0)I(1)I(2) 13 14][I(2)I(3)I(0)I(1) 14 15][I(1)I(2)I(3)I(0) 15 16]第二轮运算如下:本轮的运算规则以[I(0)I(1)I(2)I(3)k s]为例来进行,I(0)=I(1)+((I(0)+(B(I(1),I(2),I(3))+X[k])<<<s)[I(0)I(1)I(2)I(3) 1 1][I(3)I(0)I(1)I(2) 6 2][I(2)I(3)I(0)I(1) 11 3][I(1)I(2)I(3)I(0) 0 4][I(0)I(1)I(3)I(2) 5 5][I(3)I(0)I(1)I(2) 10 6][I(2)I(3)I(0)I(1) 15 7][I(1)I(2)I(3)I(0) 4 8][I(0)I(1)I(3)I(2) 9 9][I(3)I(0)I(1)I(2) 14 10][I(2)I(3)I(0)I(1) 3 11][I(1)I(2)I(3)I(0) 8 12][I(0)I(1)I(3)I(2) 13 13][I(3)I(0)I(1)I(2) 2 14][I(2)I(3)I(0)I(1) 7 15][I(1)I(2)I(3)I(0) 12 16]第三轮运算如下:本轮的运算规则以[I(0)I(1)I(2)I(3)k s]为例来进行,I(0)=I(1)+((I(0)+(C(I(1),I(2),I(3))+X[k])<<<s)[I(0)I(1)I(2)I(3) 5 1][I(3)I(0)I(1)I(2) 8 2][I(2)I(3)I(0)I(1) 11 3][I(1)I(2)I(3)I(0) 14 4][I(0)I(1)I(3)I(2) 1 5][I(3)I(0)I(1)I(2) 4 6][I(2)I(3)I(0)I(1) 7 7][I(1)I(2)I(3)I(0) 10 8][I(0)I(1)I(3)I(2) 13 9][I(3)I(0)I(1)I(2) 0 10][I(2)I(3)I(0)I(1) 3 11][I(1)I(2)I(3)I(0) 6 12][I(0)I(1)I(3)I(2) 9 13][I(3)I(0)I(1)I(2) 1 214][I(2)I(3)I(0)I(1) 1 515][I(1)I(2)I(3)I(0) 2 16]第四轮运算如下:本轮的运算规则以[I(0)I(1)I(2)I(3)k s]为例来进行,I(0)=I(1)+((I(0)+(D(I(1),I(2),I(3))+X[k])<<<s)[I(0)I(1)I(3)I(2) 0 1][I(3)I(0)I(1)I(2) 7 2][I(2)I(3)I(0)I(1) 14 3][I(1)I(2)I(3)I(0) 5 4][I(0)I(1)I(3)I(2) 12 5][I(3)I(0)I(1)I(2) 3 6][I(2)I(3)I(0)I(1) 10 7][I(1)I(2)I(3)I(0) 1 8][I(0)I(1)I(3)I(2) 8 9][I(3)I(0)I(1)I(2) 15 10][I(2)I(3)I(0)I(1) 6 11][I(1)I(2)I(3)I(0) 13 12][I(0)I(1)I(3)I(2) 4 13][I(3)I(0)I(1)I(2) 11 14][I(2)I(3)I(0)I(1) 2 15][I(1)I(2)I(3)I(0) 9 16]每轮进行16步迭代运算,四轮共需64步迭代运算完成;完成64步迭代运算后,更新I(0),I(1),I(2)和I(3),更新方法是:I(0)=II(0)+I(0)I(1)=II(1)+I(1)I(2)=II(2)+I(2)I(3)=II(3)+I(3)步骤(4)、以步骤(3)输出的I(0),I(1),I(2),I(3)为新的整型数,对步骤(2)所取得的I1分组进行MC计算;步骤(5)、重复步骤(4)直到得到IL-1分组的输出I`(0),I`(1),I`(2),I`(3)为止;步骤(6)、将I`(0),I`(1),I`(2)和I`(3)表示为16进制的ASCII码符号,并按I`(0),I`(1),I`(2)和I`(3)顺序组成字符串,在字符串的头部加上单证开具方和接受方的编码,生成12个字符的ASCII单证查询码;步骤(7)、将单证查询码打印或书写于单证的空白位置,将单证要素和单证查询码插入开具方或者中立第三方的数据表供查询;步骤(8)、接受方通过单证查询码鉴别单证的真伪。
地址 310012 浙江省杭州市文三路256号昌地火炬大厦二号楼6楼