1.一种防重放攻击的加密方法,包括:
发送端设定当前时间戳及以所述时间戳为基准的有效时间段,在所述有效时间段内分别对明文及对应随机生成的第一随机数进行加密及发送,加密后的明文和第一随机数在以所述时间戳为基准的有效时间段内保持不变;
接收端在所述时间段内接收并解密加密后的明文及与对应的第一随机数,其中,在以所述时间戳为基准的有效时间段内,将存储的仍在所述有效时间段内所有第一随机数与解密后的第一随机数一一比对,如果均不同则保存解密后的明文及对应的第一随机数并存储该解密后的第一随机数以及记录解密后的第一随机数的有效期;否则,删除解密后的第一随机数以及记录解密后的第一随机数的有效期。
2.根据权利要求1所述的方法,其特征在于,所述发送端对明文及对应随机生成的第一随机数进行加密进一步包括以下步骤:
对初始密钥进行第一轮加密并取哈希值以获得第一密钥;
将当前时间戳和第一密钥组合后进行第二轮加密并取哈希值以获得第二密钥;
根据第二密钥生成第二随机数;
采用第一密钥对第二随机数进行加密以产生加密流;
采用所述加密流对明文及对应随机生成的第一随机数进行加密。
3.根据权利要求2所述的方法,其特征在于,将当前时间戳和第一密钥组合包括将当前时间戳附加于第一秘钥后。
4.根据权利要求2或3所述的方法,其特征在于,所述发送端生成所述第一随机数进一步包括以下步骤:
对第一随机量、当前时间戳和用户ID进行第一轮加密并取哈希值以获得第三密钥;
将第二随机量与第三密钥组合后进行第二轮加密并取哈希值以获得第四密钥;
根据第四密钥生成第三随机数;
采用第三密钥对第三随机数进行加密以产生所述第一随机数,所述第一随机数与明文一一对应并保持不变。
5.根据权利要求4所述的方法,其特征在于,将第二随机量与第三密钥组合包括将第二随机量附加在第三秘钥后或第三秘钥上。
6.根据权利要求2所述的方法,其特征在于,根据第二密钥生成第二机数进一步包括以下步骤:
根据明文长度设定第一缓冲区长度和第二缓冲区长度,其中,所述第一缓冲区长度为四分之一明文长度,所述第二缓冲区长度为四分之一明文长度加上31字节;
基于所述第一缓冲区长度、PMMLCG算法和所述第二秘钥生成第一中间随机数;
基于所述第二缓冲区长度、GFSRG算法和所述第二秘钥生成第二中间随机数;
将所述第一中间随机数与所述第二中间数组合为新的随机数;
将所述新的随机数取整为整型数据,并与预设值循环进行按位与运算及移位后得到对应第二密钥的第二随机数。
7.根据权利要求6所述的方法,其特征在于,将所述第一中间随机数与所述第二中间数组合为新的随机数进一步包括以下步骤:
将第二中间随机数的后四分之一明文长度个位置的值与第一中间随机数的四分之一明文长度个值分别取平均数相加或分别相加取平均数,以得到四分之一明文长度的新的随机数。
8.根据权利要求7所述的方法,其特征在于,将所述新的随机数取整为整型数据,并与预设值循环进行按位与运算及移位后得到第二随机数进一步包括以下步骤:
将所述新的随机数取整为整型数据,并生成四分之一明文长度的缓冲区;
将所述新的随机数取整后的整型数据的第一个整型数据值与0xFF000000做按位与,按位右移24比特,得到了对应所述四分之一明文长度的缓冲区的第1个值;
将所述新的随机数取整后的整型数据的第一个整型数据值与0xFF0000做按位与,按位右移16比特,得到了对应所述四分之一明文长度的缓冲区的第2个值;
将所述新的随机数取整后的整型数据的第一个整型数据值与0xFF00做按位与,按位右移8比特,得到了对应所述四分之一明文长度的缓冲区的第3个值;
将所述新的随机数取整后的整型数据的第一个整型数据值与0xFF做按位与,得到了对应所述四分之一明文长度的缓冲区的第4个值;
将所述新的随机数取整后的整型数据的所有整型数据值分别循环与0xFF000000、0xFF0000、0xFF00、0xFF做按位与并移位后赋值给四分之一明文长度的缓冲区以得到第二随机数。
9.根据权利要求1所述的方法,其特征在于,
发送端的当前时间戳设定为过去某一确定时刻至当前时刻经过的秒数;
所述有效时间段为当前时间戳为基准的一段时间,将所述当前时间戳以1为基准循环减小,直到减少的秒数为60m的整倍数,减少的秒数对应所述有效时间段,m为预设定的时间窗有效期。
10.根据权利要求1所述的方法,其特征在于,所述明文长度为16的整倍数。