本发明一般地涉及信息安全。更具体地,本发明涉及一种加密数据的方法、和执行前述方法的电子设备和计算机可读存储介质。
背景技术:
1、本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
2、sm3算法是一种哈希算法,也叫摘要算法。所谓哈希算法就是指将一组数据输入得到一个固定长度的数据。理想的哈希算法具有3个特点:
3、1.单向性,其表示可以很容易从原文推导出哈希值,但是无法从哈希值推导原文。
4、2.一致性,其表示不管输入内容长短,输出长度是固定值,并且输出值在输出域分布均匀。
5、3.防碰撞性,其表示输入不同的情况下,输出的哈希值几乎不可能相等。
6、根据哈希算法的这些特性,哈希算法经常被用于数据摘要以及验证,消息认证码生成、验证以及随机数生成等。在具体应用中,传统的哈希算法虽然也支持流式输入数据的加密计算,但是在具体实现过程中,会存在安全隐患。例如,针对密码输入的应用场景,传统的哈希算法流式实现,在输入完成或者达到64字节之前密码在内存中都是明文形式存在,这可能被一些针对内存搜索、内存监听的攻击方式攻击,从而带来安全隐患。对此,目前还没有有效的解决方案。
技术实现思路
1、为了至少解决上述背景技术部分所描述的技术问题,本发明提出了一种加密数据的方案。利用本发明的方案,可以提高流式输入数据的加密过程的安全性。
2、鉴于此,本发明在如下的多个方面提供解决方案。
3、本发明的第一方面提供了一种加密数据的方法,所述方法包括:在针对流式输入的明文数据进行哈希运算时,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文;响应于所输入的明文数据满足预定条件,基于所述第一密文得到用于压缩函数的第一参数和第二参数,和基于所述第二密文得到用于压缩函数的第三参数,其中所述第一参数、所述第二参数和所述第三参数均为密文状态;以及在执行对所述压缩函数的计算过程中,基于所述第一参数、所述第二参数和所述第三参数确定所述压缩函数中的中间变量tt1和tt2,并更新所述哈希运算所涉及的寄存器,直至更新后的寄存器输出关于所述明文数据的哈希结果。
4、在一个实施例中,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文包括:计算所述明文数据流式输入过程中单次输入数据与临时密钥中对应字节之间的异或值,以得到所述第一密文;以及计算所述异或值与所述单次输入数据之间的差值,以得到所述第二密文。
5、在一个实施例中,所述方法还包括:获取一随机数组;以及
6、对所述随机数组进行初始化处理,以得到所述临时密钥。
7、在一个实施例中,基于所述第一密文得到用于压缩函数的第一参数和第二参数包括:对所述第一密文进行拓展以得到所述第一参数和所述第二参数。
8、在一个实施例中,基于所述第二密文得到用于压缩函数的第三参数包括:对所述第二密文进行整数合并处理,以得到所述第三参数,其中在整数合并处理过程中每隔4个字节处理进位和借位。
9、在一个实施例中,根据以下公式确定所述中间变量tt1:
10、tt1←ffj(a,b,c)+d+ss2+wa[j]-wb[j],wa[j+4]=wkey[j+4]
11、且j<16
12、
13、其中,ffj为布尔函数,a、b、c和d为所述寄存器,j为所述压缩函数的迭代轮数,wa为所述第一参数,w′a为所述第二参数,ss2为一中间参数,wkey是基于所述临时密钥拓展所得的。
14、在一个实施例,根据以下公式确定所述中间变量tt2:
15、tt2←ggj(e,f,g)+h+ss1+wa[j]-wb[j],j<16
16、
17、其中,ggj为布尔函数,e、f、g和h为所述寄存器,j为所述压缩函数的迭代轮数,wa为所述第一参数,w′a为所述第二参数,ss1为一中间参数,wkey是基于所述临时密钥拓展所得的。
18、在一个实施例中,所述哈希算法包括sm3算法。
19、本发明的第二方面提供了一种电子设备,包括:处理器;以及存储器,其存储有加密数据的计算机指令,当所述计算机指令由所述处理器运行时,使得所述设备执行根据前文第一方面以及下文多个实施例中所述的方法。
20、本发明的第三方面提供了一种计算机可读存储介质,包括加密数据的程序指令,当所述程序指令由处理器执行时,使得实现根据前文第一方面以及下文多个实施例中的方法。
21、利用本发明所提供的方案,对于流式输入的明文数据,能够针对单次输入数据进行有效保护,并且整个哈算计算过程中相关数据均以密文方式进行计算,从而避免明文的出现。由此,可以有效提高流式输入数据的加密过程的安全性。
1.一种加密数据的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,确定在所述明文数据流式输入过程中单次输入数据的第一密文和第二密文包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求2所述的方法,其特征在于,基于所述第一密文得到用于压缩函数的第一参数和第二参数包括:
5.根据权利要求4所述的方法,其特征在于,基于所述第二密文得到用于压缩函数的第三参数包括:
6.根据权利要求5所述的方法,其特征在于,根据以下公式确定所述中间变量tt1:
7.根据权利要求5所述的方法,其特征在于,根据以下公式确定所述中间变量tt2:
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述哈希算法包括sm3算法。
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,包括加密数据的程序指令,当所述程序指令由处理器执行时,使得实现根据权利要求1-8的任意一项所述的方法。