基于区块链的贷款合同存证方法

阅读: 评论:0

著录项
  • CN202210781177.4
  • 20220705
  • CN114880692A
  • 20220809
  • 浙江数秦科技有限公司
  • 俞学劢;张金琳
  • G06F21/60
  • G06F21/60 G06Q40/02 G06F21/64

  • 浙江省杭州市余杭区仓前街道鼎创财富中心2幢11层
  • 浙江(33)
摘要
本发明涉及信息技术领域,具体涉及一种基于区块链的贷款合同存证方法,金融机构制作电子贷款合同,将电子贷款合同发送给申请贷款的企业;企业核对后签名电子贷款合同的哈希值记为合同签名,发送给金融机构;金融机构将贷款申请材料、电子贷款合同及合同签名打包作为存证包,提取存证包的哈希值记为存证哈希值,发送给企业;企业核对存证包及存证哈希值后,签名存证哈希值;金融机构将电子贷款合同的哈希值、合同签名、存证哈希值及存证签名上传区块链存储;将存证包关联存证签名及区块高度存储;将存证包及存证签名发送到公证服务器,公证服务器验证后发放公证证书。本发明的实质性效果是:能够在线完成贷款合同的存证,提高存证的效率。
权利要求

1.基于区块链的贷款合同存证方法,其特征在于,包括:

金融机构根据已审批的贷款申请,制作电子贷款合同,将电子贷款合同发送给申请贷款的企业;

企业核对后签名电子贷款合同的哈希值记为合同签名,发送给金融机构;

金融机构将贷款申请材料、电子贷款合同及合同签名打包作为存证包,提取存证包的哈希值记为存证哈希值,将存证包及存证哈希值发送给企业;

企业核对存证包及存证哈希值后,签名存证哈希值,记为存证签名;

金融机构将电子贷款合同的哈希值、合同签名、存证哈希值及存证签名上传区块链存储,获得相应区块高度;

金融机构将存证包关联存证签名及区块高度后存储;

金融机构将存证包及存证签名发送到公证服务器,公证服务器验证存证签名后发放公证证书。

2.根据权利要求1所述的基于区块链的贷款合同存证方法,其特征在于,

所述电子贷款合同包含赋强公证条款,所述金融机构存证包及存证签名发送到公证服务器,公证服务器验证存证签名后发放赋强公证证书。

3.根据权利要求1或2所述的基于区块链的贷款合同存证方法,其特征在于,

企业核对后打印电子贷款合同,盖章后将扫描件发送给金融机构,所述金融机构提取盖章扫描件的哈希值,记为扫描件哈希值,将扫描件及扫描件哈希值纳入存证包。

4.根据权利要求3所述的基于区块链的贷款合同存证方法,其特征在于,

金融机构存储扫描件的方法包括:

将扫描件切分为若干个切片区域,将切片区域编号;

提取每个切片区域的哈希值,记为切片哈希值;

扫描件的哈希值记为完整哈希值,将完整哈希值和全部切片哈希值一起提取哈希值,作为扫描件哈希值;

将每个切片区域关联编号、扫描件哈希值和全部切片哈希值存储。

5.根据权利要求4所述的基于区块链的贷款合同存证方法,其特征在于,

金融机构读取多个扫描件相同位置的切片区域;

计算多个切片区域在每个像素位置的均值,全部像素的均值构成切片区域的切片模板;

计算每个切片区域与切片模板在每个像素位置的像素差值;

使用更短字节长度表示像素差值,使用例外集合存储超出缩短后字节长度表示范围的例外像素,所述例外集合记录例外像素的像素坐标和像素值。

6.根据权利要求5所述的基于区块链的贷款合同存证方法,其特征在于,

预设第一字节长度和第二字节长度,第一字节长度表示的最大值为M1,第二字节长度表示的最小值为M2,若像素差值小于M1则使用第一字节长度表示,像素差值不小于M1则使用第二字节长度表示,当表示像素差值的字节长度由第一字节长度变化为第二字节长度时,插入M1作为间隔,当表示像素差值的字节长度由第二字节长度变化为第一字节长度时,插入M2作为间隔。

7.根据权利要求1或2所述的基于区块链的贷款合同存证方法,其特征在于,

金融机构将存证包发送到公证服务器的方法包括:

将所述存证包拆分为若干个子包;

金融机构和公证服务器为每个子包约定不同的秘钥;

金融机构将子包使用约定的秘钥加密后依次发送到公证服务器;

公证服务器收到全部子包后,按顺序拼接子包获得存证包。

8.根据权利要求7所述的基于区块链的贷款合同存证方法,其特征在于,

金融机构和公证服务器约定秘钥的方法包括:

金融机构随机生成第一正奇数,计算第一正奇数的余弦值,记为第一余弦值并发送给公证服务器;

公证服务器随机生成第二正奇数,计算第二正奇数的余弦值,记为第二余弦值并发送给金融机构;

金融机构和公证服务器分别使用余弦函数的倍角公式计算第一正奇数和第二正奇数乘积的余弦值;

取余弦值的前预设位小数作为约定数,将约定数转换为字符作为约定的秘钥。

9.根据权利要求7所述的基于区块链的贷款合同存证方法,其特征在于,

金融机构提取每个子包的哈希值,全部子包的哈希值构成的字符串作为排序码,将排序码发送给公证服务器;

金融机构将子包以随机的顺序发送给公证服务器;

公证服务器收到全部子包后,提取每个子包的哈希值,与排序码对比获得子包的排序顺序,按照排序顺序拼接子包获得存证包。

10.根据权利要求1或2所述的基于区块链的贷款合同存证方法,其特征在于,

金融机构将电子贷款合同发送给申请贷款的企业的方法包括:

金融机构将电子贷款合同打包为压缩包,将压缩包拆分为若干个子压缩包;

提取每个子压缩包的哈希值,全部子压缩包的哈希值的集合发送给申请贷款的企业;

金融机构和企业之间约定多个秘钥;

金融机构生成若干个混淆子压缩包,子压缩包和混淆子压缩包构成待发送集合;

金融机构随机从待发送集合中选取一个子压缩包或者混淆子压缩包,随机从约定的多个秘钥中选择一个秘钥加密后发送给企业;

企业收到全部子压缩包及全部混淆子压缩包后,提取每个子压缩包及混淆子压缩的哈希值,与哈希值的集合比对,获得子压缩包及子压缩包的排序;

按照排序拼接子压缩包获得压缩包,解压获得电子贷款合同。

说明书
技术领域

本发明涉及信息技术领域,具体涉及一种基于区块链的贷款合同存证方法。

贷款指贷款、贴现、透支等出贷资金的总称。银行通过贷款的方式将所集中的货币和货币资金投放出去,可以满足社会扩大再生产对补充资金的需要,促进经济的发展。按照贷款期限分为中长期贷款、中期贷款、短期贷款和透支。按照贷款用途分为固定资产投资贷款、项目融资贷款、一般固定资产贷款、流动资金贷款、铺底流动资金贷款、临时流动资金周转贷款和票据贴现。按照贷款担保方式分为、信用贷款、担保贷款、保证贷款、按揭贷款、质押贷款和票据贴现。在贷款过程中,贷款公司的审查人员需要根据借款人的信用情况和还款能力对贷款人的资格审查和评定,评测贷款风险度,保障贷款资金的安全。对贷款合同进行妥善保存和公证,亦是保障贷款资金安全的重要公证内容。在公证方式中,赋强公证能够直接跳过起诉阶段,进入强制执行阶段,能够有力提高贷款资金安全性。赋强公证指赋予债权文书具有强制执行效力的公证,赋强公证在维权的时候可以免去中间诉讼环节,直接进入执行程序。但目前并没有能够直接在线上完成贷款合同存证的技术,仍然不足以保障贷款资金的安全。为此有必要研究贷款合同的存证技术。

如中国专利CN112181976A,公开日2021年1月5日,公开了一种基于区块链的面向小额贷款的存证方法和系统。担保人获取第三方CA公钥认证,担保人至少出具以上三种信息。借款人的信息由存证系统前端扫描形成扫描件,借款人用私钥对于扫描件签名,有借款担保人的使用多方签名技术,使用基于密文属性加密技术对于扫描件和签名进行加密,使得匹配属性的小额贷款证据区块链共识节点可以解密及验签,保证借款人信息的安全性与隐秘性。但其技术方案并不能实现在线进行贷款合同的存证。

本发明要解决的技术问题是:目前缺乏在线完成贷款合同存证方案的技术问题。提出了一种基于区块链的贷款合同存证方法,能够在线实现贷款合同的存证。

为解决上述技术问题,本发明所采取的技术方案为:基于区块链的贷款合同存证方法,包括:

金融机构根据已审批的贷款申请,制作电子贷款合同,将电子贷款合同发送给申请贷款的企业;

企业核对后签名电子贷款合同的哈希值记为合同签名,发送给金融机构;

金融机构将贷款申请材料、电子贷款合同及合同签名打包作为存证包,提取存证包的哈希值记为存证哈希值,将存证包及存证哈希值发送给企业;

企业核对存证包及存证哈希值后,签名存证哈希值,记为存证签名;

金融机构将电子贷款合同的哈希值、合同签名、存证哈希值及存证签名上传区块链存储,获得相应区块高度;

金融机构将存证包关联存证签名及区块高度后存储;

金融机构将存证包及存证签名发送到公证服务器,公证服务器验证存证签名后发放公证证书。

作为优选,所述电子贷款合同包含赋强公证条款,所述金融机构存证包及存证签名发送到公证服务器,公证服务器验证存证签名后发放赋强公证证书。

作为优选,企业核对后打印电子贷款合同,盖章后将扫描件发送给金融机构,所述金融机构提取盖章扫描件的哈希值,记为扫描件哈希值,将扫描件及扫描件哈希值纳入存证包。

作为优选,金融机构存储扫描件的方法包括:

将扫描件切分为若干个切片区域,将切片区域编号;

提取每个切片区域的哈希值,记为切片哈希值;

扫描件的哈希值记为完整哈希值,将完整哈希值和全部切片哈希值一起提取哈希值,作为扫描件哈希值;

将每个切片区域关联编号、扫描件哈希值和全部切片哈希值存储。

作为优选,金融机构读取多个扫描件相同位置的切片区域;

计算多个切片区域在每个像素位置的均值,全部像素的均值构成切片区域的切片模板;

计算每个切片区域与切片模板在每个像素位置的像素差值;

使用更短字节长度表示像素差值,使用例外集合存储超出缩短后字节长度表示范围的例外像素,所述例外集合记录例外像素的像素坐标和像素值。

作为优选,预设第一字节长度和第二字节长度,第一字节长度表示的最大值为M1,第二字节长度表示的最小值为M2,若像素差值小于M1则使用第一字节长度表示,像素差值不小于M1则使用第二字节长度表示,当表示像素差值的字节长度由第一字节长度变化为第二字节长度时,插入M1作为间隔,当表示像素差值的字节长度由第二字节长度变化为第一字节长度时,插入M2作为间隔。

作为优选,金融机构将存证包发送到公证服务器的方法包括:

将所述存证包拆分为若干个子包;

金融机构和公证服务器为每个子包约定不同的秘钥;

金融机构将子包使用约定的秘钥加密后依次发送到公证服务器;

公证服务器收到全部子包后,按顺序拼接子包获得存证包。

作为优选,金融机构和公证服务器约定秘钥的方法包括:

金融机构随机生成第一正奇数,计算第一正奇数的余弦值,记为第一余弦值并发送给公证服务器;

公证服务器随机生成第二正奇数,计算第二正奇数的余弦值,记为第二余弦值并发送给金融机构;

金融机构和公证服务器分别使用余弦函数的倍角公式计算第一正奇数和第二正奇数乘积的余弦值;

取余弦值的前预设位小数作为约定数,将约定数转换为字符作为约定的秘钥。

作为优选,金融机构提取每个子包的哈希值,全部子包的哈希值构成的字符串作为排序码,将排序码发送给公证服务器;

金融机构将子包以随机的顺序发送给公证服务器;

公证服务器收到全部子包后,提取每个子包的哈希值,与排序码对比获得子包的排序顺序,按照排序顺序拼接子包获得存证包。

作为优选,金融机构将电子贷款合同发送给申请贷款的企业的方法包括:

金融机构将电子贷款合同打包为压缩包,将压缩包拆分为若干个子压缩包;

提取每个子压缩包的哈希值,全部子压缩包的哈希值的集合发送给申请贷款的企业;

金融机构和企业之间约定多个秘钥;

金融机构生成若干个混淆子压缩包,子压缩包和混淆子压缩包构成待发送集合;

金融机构随机从待发送集合中选取一个子压缩包或者混淆子压缩包,随机从约定的多个秘钥中选择一个秘钥加密后发送给企业;

企业收到全部子压缩包及全部混淆子压缩包后,提取每个子压缩包及混淆子压缩的哈希值,与哈希值的集合比对,获得子压缩包及子压缩包的排序;

按照排序拼接子压缩包获得压缩包,解压获得电子贷款合同。

本发明的实质性效果是:借助区块链实现电子贷款合同的存证,能够在线完成贷款合同的存证,提高存证的效率,保障贷款业务的安全;借助赋强公证进一步提高贷款业务的安全;使用改进的加密技术,提高存证包在网络上传送的安全性,使贷款业务存证包不被泄露。

图1为实施例一贷款合同存证方法示意图。

图2为实施例一金融机构存储扫描件方法示意图。

图3为实施例一金融机构生成切片模板方法示意图。

图4为实施例二将存证包发送到公证服务器方法示意图。

图5为实施例二金融机构和公证服务器约定秘钥方法示意图。

图6为实施例二将电子贷款合同发送给企业方法示意图。

下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。

实施例一:

基于区块链的贷款合同存证方法,请参阅附图1,包括:

步骤A01)金融机构根据已审批的贷款申请,制作电子贷款合同,将电子贷款合同发送给申请贷款的企业。贷款合同为要式合同,具有固定的格式,金融机构制定相应的电子合同,将企业名称、贷款金额、贷款期限和抵押类型填入电子贷款合同,将填写好内容的电子贷款合同发送给企业。贷款种类包括信用贷款、抵押贷款和票据贴现。

步骤A02)企业核对后签名电子贷款合同的哈希值记为合同签名,发送给金融机构。签名指使用非对称加密秘钥中的私钥加密的过程,经私钥签名后,只有使用相应的公钥才能解密。公钥也只能正确解密对应私钥签名的内容,因此私钥能够起到身份证明的作用。

步骤A03)金融机构将贷款申请材料、电子贷款合同及合同签名打包作为存证包,提取存证包的哈希值记为存证哈希值,将存证包及存证哈希值发送给企业。如选择抵押贷款,则提交的贷款申请材料中,包含企业甲的资质信息,如营业执照等,企业甲填写的贷款合同,记录欲申请的贷款金额和贷款期限,申请企业填写的抵押合同,记录相关抵押条款,抵押物的物权证明文件。贷款申请材料均使用电子版即可。

步骤A04)企业核对存证包及存证哈希值后,签名存证哈希值,记为存证签名;哈希值是有散列函数计算获得。常用的散列函数有SHA-256和SM3,如SHA-256计算获得的哈希值为256位十六进制数,如0xAE076…38DB02,哈希值具有唯一性。散列函数不仅具有很难到逆向规律,还具有当内容有微小改动时,哈希值也会发生显著变化的特点。对存证哈希值进行签名即可证明企业对存证包的知悉和同意。

步骤A05)金融机构将电子贷款合同的哈希值、合同签名、存证哈希值及存证签名上传区块链存储,获得相应区块高度。通过区块链存储的数据具有不可篡改、永不丢失的特点,能够提供数据的真实性证明。

步骤A06)金融机构将存证包关联存证签名及区块高度后存储。金融机构将存证包存储,通过区块链进行存证,为存证包提供了真实性证明,能够保证存证包的真实性。

步骤A07)金融机构将存证包及存证签名发送到公证服务器,公证服务器验证存证签名后发放公证证书。将存证包发送给公证服务器,经过验证后公证服务器发放公证证书。经过公证的电子贷款合同具有更好的真实性证明。

随着经济节奏的加快,目前赋强公证逐渐得到市场的青睐。电子贷款合同包含赋强公证条款,金融机构存证包及存证签名发送到公证服务器,公证服务器验证存证签名后发放赋强公证证书。“赋强公证”是“赋予债权文书强制执行效力公证”的简称。通常的债权文书是体现债权债务关系的各种文书的总称,包括各种合同、协议、借据、欠条、有价证券等。这些债权文书都是可以做公证的。也就是一般意义上的债权文书公证,是对债权文书的真实性、合法性进行证明的活动。给“债权文书公证”加上“赋予强制执行效力”时,该债权文书就必须是具有一定特殊性的,必须具备以下条件:债权文书以给付货币、物品或者有价证券为内容;债权债务关系明确,债权人和债务人对债权文书有关给付内容无疑义;债权文书中载明债务人不履行或者不适当履行义务时,债务人愿意接受强制执行的承诺;该项承诺也可以通过承诺书或者补充协议等方式在债权文书的附件中载明。公证机构可通过与银行核实债务、告知强制执行法律后果、参与调解等方式督促债务人履行债务,避免“真实弹”的强制执行,快速、和谐地解决债务纠纷。

企业核对后打印电子贷款合同,盖章后将扫描件发送给金融机构,金融机构提取盖章扫描件的哈希值,记为扫描件哈希值,将扫描件及扫描件哈希值纳入存证包。将电子贷款合同的扫描件提供给金融机构,能够增加贷款合同的正式性和可信度。

请参阅附图2,金融机构存储扫描件的方法包括:

步骤B01)将扫描件切分为若干个切片区域,将切片区域编号;

步骤B02)提取每个切片区域的哈希值,记为切片哈希值;

步骤B03)扫描件的哈希值记为完整哈希值,将完整哈希值和全部切片哈希值一起提取哈希值,作为扫描件哈希值;

步骤B04)将每个切片区域关联编号、扫描件哈希值和全部切片哈希值存储。由于企业借贷后绝大部分时候均能够按期还款,贷款合同在签订后通常不需要再次使用。通过将扫描件切分后分散存储,能够提高扫描件存储过程中的安全性,避免泄露。

贷款合同属于要式合同,合同的大部分内容均为重复内容,存储时仅需要存储若干个差异位置的数据即可。其余部分直接读取电子版的空白合同相应区域的数据,与差异位置的数据组合即可复原电子版的贷款合同。然而对于图像格式的扫描件,由于每个企业进行扫描时的纸张、光线以及扫描设备的差异,扫描件在每个像素位置的像素值不尽相同。

对于贷款合同的扫描件而言,其大部分像素区域的内容是相同的,但因扫描差异性,导致像素值有细微的差别。为此,本实施例为每个切片区域建立切片模板,以降低扫描件占用的存储空间,请参阅附图3,包括:

步骤C01)金融机构读取多个扫描件相同位置的切片区域;

步骤C02)计算多个切片区域在每个像素位置的均值,全部像素的均值构成切片区域的切片模板;

步骤C03)计算每个切片区域与切片模板在每个像素位置的像素差值;

步骤C04)使用更短字节长度表示像素差值,使用例外集合存储超出缩短后字节长度表示范围的例外像素,例外集合记录例外像素的像素坐标和像素值。

采用本实施例对扫描件进行无损的压缩存储,能够节省存储设备的开支。读取扫描件时,将保存的像素差值和切片模板叠加后,使用例外集合记录的像素值替换对应像素坐标的像素值,复原切片区域。为每个切片区域生成相应的切片哈希值,使每个切片区域均获得存证,提高了扫描件存证的可信度。

扫描件以图片格式存储,图片的像素使用RGB彩体系表示,每个像素使用3个通道,每个通道的通道值使用1个字节表示,即每个通道取值范围为[0,255],三个通道值的集合构成像素值。每个像素值占用3个字节。由于贷款合同41的扫描件,在同一个区域内的图像是高度相似的。因此每个扫描件在相同像素位置的像素值与共用切片的差值将较小。使用半个字节就足以表示。即每个通道的差值取值范围为[0,15],加上一个位表示差值的正负号。差值的形成主要是由于扫描设备每次扫描时的硬件差异。对于差值超出[0,15]的像素点,则采用例外集合的方式,单独记录这样的像素点。由于共用切片只需要存储一次,大部分像素使用像素差值即可存储,每个像素占用空间缩短一半。虽然少量像素需要占用例外集合的空间,但对于相同类型档案的相同区域,例外像素的数量应当是较少的,从而整体上占用更少的存储空间。

更有利的,本实施例为每个切片区域关联一个调整像素值,调整数具有正负属性,如RGB格式下的调整像素值为(-30,12,-26)。切片区域的像素位置的像素值均叠加调整像素值。使得叠加调整像素值后,切片区域与切片模板对比后,需要使用例外集合记录的像素值的数量最少。

更有利的,本实施例将例外集合的存储直接纳入正常的像素值存储流中。具体包括:预设第一字节长度和第二字节长度,第一字节长度表示的最大值为M1,第二字节长度表示的最小值为M2,若像素差值小于M1则使用第一字节长度表示,像素差值不小于M1则使用第二字节长度表示,当表示像素差值的字节长度由第一字节长度变化为第二字节长度时,插入M1作为间隔,当表示像素差值的字节长度由第二字节长度变化为第一字节长度时,插入M2作为间隔。

第二字节长度即扫描件正常存储下,每个像素值的通道值占用的字节长度。使用RGB表示颜时。每个像素点有三个通道,每个通道占用1字节,即8位。表示像素差值时,使用5个位表示,第一个位表示正负号,即在切片模板上对应像素位置的对应通道值上增加或减少后续4位表示的差值。4个位表示的范围是[0,15]。即第一字节长度为五个位长度。第一字节长度表示的最大值为M1,第二字节长度表示的最小值为M2。则M1的值为15,M2的值为0。

表1 相邻若干个像素值的表示

切片模板 (245,245,245) (30,30,32) … (205,215,208) 切片区域 (240,235,239) (242,240,242) … (213,219,217) 像素差值 (-5,-10,-6) (212,210,210) … (8,4,9)

如表1所示,表示电子贷款合同的扫描件上述的相邻若干个个像素值的二进制表示为:(10101,11010,10110)、(11010100,11010010,11010010)、…、(01000,00100,01001)。

添加M1和M2作为间隔得到:(10101,11010,10110)、M1:(01111,01111,01111)、(11010100,11010010,11010010)、…、M2:(00000000,00000000,00000000)、(01000,00100,01001)。

最终若干个个像素的二进制表示为:101011101010110011110111101111110101001101001011010010…000000000000000000000000010000010001001。

读取到上述的若干个像素时,为像素差值模式,即一次性读取5x3个位。而后划分为3个5位二进制数,分别为第一个像素相对切片模板同像素位置像素值的差值。5个位中首位位1,则为负值,首位为0,则为正值。获得(-5,-10,-6),结合切片模板,能够复原第一个像素。向后再次读取5x3个位,发现三个通道的像素差值全部为正15,即M1的值,因此丢弃该5x3个位。而后向下读取8x3个位,即直接读取获得下一个像素的3个通道的值,直接复原出该像素。不断向下读取直到读取到某个8x3个位时,读取到的值全部为0,则丢弃该8x3个位。并切换为向下读取5x3个位的模式继续读取。由于RGB中(0,0,0)表示纯黑,而档案扫描中受印刷饱和度和光照影响,得到的档案扫描件中,黑部分将呈现为接近黑的深灰,而几乎不可能是纯黑。因此M2不会导致档案扫描件失真的情况。若某个位置的像素与切片模板的像素差值的3个通道都恰好为15,则不使用像素差值表示该像素,采用一个字节直接表示该像素。

本实施例的实质性效果是:借助区块链实现电子贷款合同的存证,能够在线完成贷款合同的存证,提高存证的效率,保障贷款业务的安全;借助赋强公证进一步提高贷款业务的安全。

实施例二:

基于区块链的贷款合同存证方法,本实施例提供了保障存证包发送给公证服务器时,在网络传输过程中的安全性。请参阅附图4,金融机构将存证包发送到公证服务器的方法包括:

步骤D01)将存证包拆分为若干个子包;

步骤D02)金融机构和公证服务器为每个子包约定不同的秘钥;

步骤D03)金融机构将子包使用约定的秘钥加密后依次发送到公证服务器;

步骤D04)公证服务器收到全部子包后,按顺序拼接子包获得存证包。

每个子包经不同的秘钥加密后发送给公证服务器,能够有效提高存证包的安全性。避免贷款资料的泄露,有效的保证企业线上申请贷款过程中提交的相关材料的安全。

请参阅附图5,金融机构和公证服务器约定秘钥的方法包括:

步骤E01)金融机构随机生成第一正奇数,计算第一正奇数的余弦值,记为第一余弦值并发送给公证服务器;

步骤E02)公证服务器随机生成第二正奇数,计算第二正奇数的余弦值,记为第二余弦值并发送给金融机构;

步骤E03)金融机构和公证服务器分别使用余弦函数的倍角公式计算第一正奇数和第二正奇数乘积的余弦值;

步骤E04)取余弦值的前预设位小数作为约定数,将约定数转换为字符作为约定的秘钥。

金融机构向公证服务器发起交换秘钥的请求,而后金融机构和公证服务器分别生成第一正奇数d和第二正奇数e。金融机构计算x1=cos(d),将x1发送给公证服务器,x1保留N为小数。公证服务器计算x2=cos(e),将x2发送给金融机构。

金融机构使用余弦函数的倍角公式计算T1=cos(d*e)= dup_d(cos(e))= dup_d(x1),dup_d()表示余弦函数的d倍角公式。公证服务器计算T2=cos(e*d)= dup_e(cos(d))= dup_e(x2),dup_e()表示余弦函数的e倍角公式。计算所得T1和T2理论上应相等。但计算过程中必然存在误差,因此需要取T1和T2的前预设位小数作为约定的秘钥。计算过程中的精度保证前预设位小数的准确性即可。

本实施例中金融机构生成的第一正奇数为d=7,公证服务器生成的第二正奇数为e=3,约定保留小数位数为10位,最终取前6位小数作为秘钥。

表2 金融机构与公证服务器交换秘钥过程表

金融机构 公开内容 公证服务器 n=14,N=6 n=14,N=6 n=14,N=6 d=7,x1=cos(7) - - x1=0.7539022543433 x1=0.7539022543433 x1=0.7539022543433 - - e=3,x2=cos(3) x2=-0.98999249660045 x2=-0.98999249660045 x2=-0.98999249660045 T1=cos(7*e) - T2=cos(3*d) Key=floor(10^10*abs(cos(7*e))) - Key=floor(10^10*abs(cos(3*d))) T1=-0.5477292602 - T2=-0.5477292602 Key1= floor(10^6*abs(-0.5477292602)) - Key2= floor(10^6*abs(-0.5477292602)) Key1= 547729 - Key2= 547729

金融机构与公证服务器交换秘钥的过程如表2所示。经过上述交换秘钥的步骤后,金融机构和公证服务器交换的秘钥为“547729”,转换为字符串即可获得秘钥。

本领域已公开正弦函数的倍角公式为:

sin(mx)=∑(-1)^k*m!/((2k+1)!*(m-2k-1)!)*(cosx)^(m-2k-1)*(sinx)^(2k+1),其中m为偶数,k∈[0,m/2-1]。

sin(mx)=∑(-1)^k*m!/((2k+1)!*(m-2k-1)!)*(cosx)^(m-2k-1)*(sinx)^(2k+1),其中m为奇数,k∈[0,(m-1)/2]。

余弦函数的倍角公式为:

cos(mx)=∑(-1)^k*m!/((2k)!*(m-2k)!)*(cosx)^(m-2k)*(sinx)^(2k),其中m为偶数,k∈[0,m/2]。

cos(mx)=∑(-1)^k*m!/((2k)!*(m-2k)!)*(cosx)^(m-2k)*(sinx)^(2k),其中m为奇数,k∈[0,(m-1)/2]。

本实施例中加密算法的安全性建立在计算给定数的余弦值快捷,且精度可自行设置,而从余弦值反向推算角度值则十分困难的规律之上。由余弦值反向推算角度值,有两种方式:穷举破解和反余弦函数计算。

穷举破解需要逐个遍历每个可能值,C=(cos(d*e))_N,其中有两个未知的变量,即d和e。尝试生成猜测值d’和猜测值e’,计算cos(d’*e’),使cos(d’*e’)恰好与公开的密文C相同当e的值较大时,如e在十进制表示下的位数达到100位,且n的值也取100,即x2的小数位保留有100个。仅仅遍历e的值,由于遍历100位数需要进行10^100次余弦函数运算。以1GHz的计算频率,需要用时10^91秒,约3*10^82年。以537212.00Tflops的算力进行计算时,Tflops为每秒万亿次浮点运算,认为余弦函数计算与单次浮点运算时间相同,仍然需要的时间仍为2*10^82秒,约6*10^73年。可见,通过增加d、e以及n的值足以应对穷举破解。

由于反余弦函数arccos的值域为[-π/2,π/2],得到反余弦函数arccos的值后,还需要进行修正。即将arccos(C)的值与2*k*π相加。由于π为无理数,即有无数个小数位。e的值的位数也不确定,因而无法确定e的值。更何况密文C仅保留了N位小数,超过N位的小数位被截断,是有损变换。使用C进行反余弦函数计算的结果本身即存在较大的误差。

金融机构提取每个子包的哈希值,全部子包的哈希值构成的字符串作为排序码,将排序码发送给公证服务器;

金融机构将子包以随机的顺序发送给公证服务器;

公证服务器收到全部子包后,提取每个子包的哈希值,与排序码对比获得子包的排序顺序,按照排序顺序拼接子包获得存证包。通过子包的哈希值确定子包的顺序,只有收到全部子包才能破解获得完整的存证包,能够提高存证包在网络上传输的安全性。

同样的,金融机构将电子贷款合同发送给企业时,也采用了相应的加密方法。具体请参阅附图6,金融机构将电子贷款合同发送给申请贷款的企业的方法包括:

步骤F01)金融机构将电子贷款合同打包为压缩包,将压缩包拆分为若干个子压缩包;

步骤F02)提取每个子压缩包的哈希值,全部子压缩包的哈希值的集合发送给申请贷款的企业;

步骤F03)金融机构和企业之间约定多个秘钥;

步骤F04)金融机构生成若干个混淆子压缩包,子压缩包和混淆子压缩包构成待发送集合;

步骤F05)金融机构随机从待发送集合中选取一个子压缩包或者混淆子压缩包,随机从约定的多个秘钥中选择一个秘钥加密后发送给企业;

步骤F06)企业收到全部子压缩包及全部混淆子压缩包后,提取每个子压缩包及混淆子压缩的哈希值,与哈希值的集合比对,获得子压缩包及子压缩包的排序;

步骤F07)按照排序拼接子压缩包获得压缩包,解压获得电子贷款合同。

金融机构将子压缩包发送给企业时,掺杂了部分混淆子压缩包。只有收到了全部子压缩包的哈希值的集合的企业,才能分辨哪些是子压缩包。而且子压缩包的哈希值的集合也同时能够确定子压缩包的顺序。企业提取每个子压缩包及混淆子压缩的哈希值,与哈希值的集合比对即可获得。通过拆分子压缩包,并掺入混淆子压缩包的方式,能够增加电子贷款合同在网络上传输的安全性,确保企业的经营信息不被泄露。相当于实施例一,本实施例使用改进的加密技术,提高存证包在网络上传送的安全性,使贷款业务存证包不被泄露。

实施例三:

基于区块链的贷款合同存证方法,相对于实施例一和实施例二,本实施例为企业签名电子贷款合同的哈希值提供了具体的改进方案。

现有技术中,获得非对称加密秘钥的公钥和私钥,需要由中心化的服务器提供。即由中心化的服务器生成公私秘钥对后,将私钥通过网络加密发送给企业。只要保证一次发送的安全即可。安全性由中心化服务器本身的安全决定,存在局限性。本实施例中,企业自行生成公私秘钥对,并生成私钥声明。更为有利的,私钥声明的格式由金融机构预先公布,采用统一的私钥声明格式能够提高私钥声明的正式性,提高其可信度。企业打印私钥声明并盖章,生成盖章后私钥声明的扫描件,记为声明扫描件。使用私钥签名声明扫描件的哈希值,将声明扫描件、声明扫描件哈希值的签名和公钥上传到区块链存储。金融机构查看声明扫描件,提取声明扫描件的哈希值,使用公钥验证签名,若验证一致,则金融机构接受相应的公钥与企业的对应关系。从而就接受了公钥对应的私钥与企业的对应关系。

本实施例提供了改进的公私秘钥生成方法,具体包括:企业生成加密数、调整数、解密数和限值,调整数为小数,解密数为正奇数,加密数、调整数和解密数的乘积等于2π的整倍数加1;限值为位数大于哈希值位数的十六进制正数,加密数为私钥,调整数、解密数和限值为公钥。调整数为小数,记为正小数d,本实施例采用加密数为正整数,记为正整数g,解密数为正奇数,记为正奇数e,即d*e*g=(10^s*k*π)_N+1,其中s为预设正整数,k为正偶数,N表示括号内的数保留N位小数。本实施例中设置N=6,即计算中保留6位小数,s的值设置为5。生成正小数d、正整数g和正奇数e分别为d=1012291.0217121,g=6,e=3,满足d*e*g=(10^s*k*π)_N+1=(29*10^5*2*π)_N+1=18221238.390819。即在6位小数的精度下,d*e*g的乘积是29*10^5个2π周期加1的值。任意举例cos(2.567)=-0.83941376,而cos(d*e*g*2.567)=cos(46773918.949232)= -0.83941104。误差为0.00000272,误差率为0.0003%。在误差范围内能够用于加解密。若要提高精度,则提高N的值即可。如设置N=100,将提供更高的精度。

企业使用生成的私钥签名声明扫描件的哈希值的方法包括:将声明扫描件哈希值和限值均以十进制表示;尝试生成辅助数,使辅助数的余弦值保留前M位小数恰好与声明扫描件哈希值的十进制表示相符;计算加密数、调整数与辅助数的乘积的余弦值作为密文,密文即为签名。更为有利的,将声明扫描件的哈希值拆分为多个十六进制数,分别计算每个十六进制数的密文,全部密文拼接获得声明扫描件哈希值的密文。

某个截断的十六进制数为0x24,转换为十进制得到W=36。尝试生成小数m,使round(10^M*cos(m))=W。本实施例中截断的二进制数长度为1字节,即最大值为255,即W可能的最大长度为3位,因此M的值取3。尝试生成小数m,获得m=26.6673时,有cos(26.6673)=0.036229625079962。尝试生成m是方便快速的,且m的值并不唯一,因此本实施例提供的限时加密是一种密文不唯一的加密算法。选定m=26.6673,计算C=(cos(d*g*m))_N作为密文,cos(d*g*m)=cos(1012291.0217121*6*26.6673)=-0.859909163882019726095。保留6位小数,获得C=(cos(d*g*m))_N=-0.859909。将C=-0.859909作为二进制段的密文。全部十六进制数的密文构成声明扫描件的签名。

验证签名的过程为:使用余弦函数的倍角公式计算解密数、加密数、调整数与辅助数的乘积的余弦值,取余弦值的前M位小数恰好获得声明扫描件哈希值的十进制表示,转换为十六进制获得复原的声明扫描件哈希值;步骤E02)将复原的声明扫描件哈希值与声明扫描件提取的哈希值对比,若一致,则签名验证通过,反之,则签名验证不通过。计算T=(cos(e*d*g*m)_N=(dup_e(C))_N,其中dup_e()表示余弦函数的e倍角公式,由d*e*g=(10^s*k*π)_N+1,则有T=(cos(10^s*k*π*m+m))_N=(cos(m))_N。计算round(10^M*T)即得声明扫描件哈希值片段的十六进制数的十进制表示W。计算T=(cos(e*d*g*m)_N=(dup_e(C))_N=(cos(3*d*m)_N=(dup_3(C))_N=(4*C^3-3*C)_N=0.036310。取余弦值的前3位小数为036,即十进制值为36,转换为十六进制恰好为0x24,全部签名均解密后获得完整的声明扫描件哈希值。与声明扫描件比对即可。通过改进的非对称加密算法,即实现了签名和签名的验证,同时能够提高签名和验证签名的计算效率和安全性,保障贷款业务的办理。

以上的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。

本文发布于:2023-04-14 19:51:31,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86820.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图