CN112231743B - 一种数据加密存储的实现方法及装置 - Google Patents

一种数据加密存储的实现方法及装置 Download PDF

Info

Publication number
CN112231743B
CN112231743B CN202011490259.0A CN202011490259A CN112231743B CN 112231743 B CN112231743 B CN 112231743B CN 202011490259 A CN202011490259 A CN 202011490259A CN 112231743 B CN112231743 B CN 112231743B
Authority
CN
China
Prior art keywords
data
current
sector
module
written
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011490259.0A
Other languages
English (en)
Other versions
CN112231743A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jianshi Chengxin Technologies Co.,Ltd.
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN202011490259.0A priority Critical patent/CN112231743B/zh
Publication of CN112231743A publication Critical patent/CN112231743A/zh
Application granted granted Critical
Publication of CN112231743B publication Critical patent/CN112231743B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开一种数据加密存储的实现方法及装置,涉及信息安全领域。该方法包括:加密设备根据写数据指令中的扇区地址计算对应的当前中间数据;根据数据块的长度对待写入数据进行分块,将第一个数据块作为当前待写入数据块;根据第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;然后更新当前中间数据,将下一个数据块作为当前待写入数据块,继续计算最终数据块并存储,直至所有数据块均存储完成。本实施例方案在生成最终数据块的过程中需要中间数据参与,由于每个数据块使用的中间数据均不同,故提高了数据存储的安全性;且中间数据是根据初始参数和数据块编号计算得到,只需要存储初始值即可,也提高了数据存储的便捷性。

Description

一种数据加密存储的实现方法及装置
技术领域
本发明涉及信息安全领域,尤其涉及一种数据加密存储的实现方法及装置。
背景技术
随着电子信息的高速发展,当前社会已经进入信息时代,电子信息技术成为当代最活跃、渗透力最强的科学技术,随着我国科学技术的迅速发展和人民生活水平的不断提高,各种信息技术的应用已经进入千家万户,成为现代家庭生活中不可缺少的重要组成部分,在电子信息技术中,各种数据应用于各行各业中。现有技术中,数据的存储至关重要,为保证数据的安全性一般使用密钥对数据进行加密然后再存储,但是由于加密使用的密钥一直不变,如非法者获悉密钥就能知道数据明文,使数据的安全性存在极大隐患;近来,公开了使用不同密钥对数据加密后再存储的技术,但是由于这些不同密钥需要预先进行存储和管理,需要较大的内存和复杂的密钥管理方法,使用非常不便,故如何进一步地提高存储数据的安全性和便捷性是亟待解决的问题。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种数据加密存储的实现方法及装置。
本发明提供了一种数据加密存储的实现方法,包括:
步骤S1:当加密设备接收到终端设备发送的写数据指令时,根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则执行步骤S5,否则执行步骤S2;
步骤S2:所述加密设备根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,根据写数据指令中的扇区地址计算起始待写入数据块的编号;
步骤S3:所述加密设备判断当前中间数据的更新次数是否与所述待写入数据块的编号匹配,是则执行步骤S6,否则执行步骤S4;
步骤S4:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤S3;
步骤S5:所述加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,执行步骤S6;
步骤S6:所述加密设备根据数据块的长度对所述写数据指令中的待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
步骤S7:所述加密设备根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
步骤S8:所述加密设备判断所述待写入数据是否写入完成,是则写入数据完成;否则所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,返回步骤S7。
本发明又提供了一种数据加密存储的实现装置,包括:
第一接收判断模块,用于当加密设备接收到终端设备发送的写数据指令时,根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则触发第一加密更新模块,否则触发第一加密计算模块;
所述第一加密计算模块,用于根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,还用于根据写数据指令中的扇区地址计算起始待写入数据块的编号;
第一判断模块,用于判断更新当前中间数据的次数是否与所述待写入数据块的编号匹配,是则触发第一分块模块,否则触发第一运算更新模块;
所述第一运算更新模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第一判断模块;
所述第一加密更新模块,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第一分块模块;
所述第一分块模块,用于根据数据块的长度对所述写数据指令中的待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
第一生成模块,用于根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
第一判断更新模块,用于判断所述待写入数据是否写入完成,是则写入数据完成;否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,触发所述第一生成模块。
本发明与现有技术相比,具有以下优点:本实施例方案在加密过程中需要中间数据参与,由于每个数据块使用的当前中间数据均不同,故提高了数据存储的安全性;且当前中间数据的初始值是根据参数值加密得到,且根据数据块编号进行更新,故只需要存储初始值即可,也提高了数据存储的便捷性。
附图说明
图1为本发明实施例一提供的一种数据加密存储的实现方法流程图;
图2为本发明实施例二提供的一种数据加密存储的实现方法流程图;
图3为本发明实施例三提供的一种数据加密存储的实现方法流程图;
图4和图5为本发明实施例四提供的一种数据加密存储的实现方法流程图;
图6为本发明实施例五提供的一种数据加密存储的实现装置方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种数据加密存储的实现方法,具体以往一个扇区写入数据为例进行说明,如图1所示,本实施例的方法包括:
步骤S1:当加密设备接收到终端设备发送的写数据指令时,根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则执行步骤S5,否则执行步骤S2;
步骤S2:加密设备根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,根据写数据指令中的扇区地址计算起始待写入数据块的编号;
步骤S3:加密设备判断更新当前中间数据的次数是否与待写入数据块的编号匹配,是则执行步骤S6,否则执行步骤S4;
步骤S4:加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤S3;
步骤S5:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,执行步骤S6;
步骤S6:加密设备根据数据块的长度对写数据指令中的待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
步骤S7:加密设备根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
在本实施例中,加密设备根据当前待写入数据块与当前中间数据生成最终数据,具体为:加密设备将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据;
步骤S8:加密设备判断待写入数据是否写入完成,是则写入数据完成;否则加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,返回步骤S7;
在本实施例中,步骤S2与步骤S5之前(即在使用第二密钥之前)还包括:
步骤T1:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则继续执行步骤S2或执行步骤S5,否则执行步骤T2;
在本实施例中,当加密设备与终端设备第一次建立连接时,加密设备提示用户设置加密硬盘的密码,当接收到用户输入的密码时,对该密码进行哈希运算得到密码哈希值并保存;
当加密设备与终端设备断开再次建立连接时,加密设备对用户身份进行验证,如验证成功则继续,如验证失败则报错;
其中,加密设备对用户身份进行验证,包括:加密设备提示用户输入密码,当接收到用户输入的密码时,对密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败;加密设备对用户身份验证成功之后开始工作;
步骤T2:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,继续执行步骤S2或执行步骤S5;
具体的,在本实施例中,步骤T2中的根据用户输入的密码生成第一密钥、第二密钥和参数值并保存,包括:加密设备将保存的密码哈希值分割为等长的两部分,一部分作为第一密钥,另一部分作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,将第一密钥、第二密钥和参数值保存;
可选的,在本实施例中,加密设备与终端设备第一次建立连接时,加密设备提示用户设置加密硬盘的密码,当接收到用户输入的密码时保存该密码;当加密设备与终端设备断开再次建立连接时,加密设备提示用户输入密码,当接收到用户输入的密码时;判断保存的密码与接收到的用户输入的密码是否一致,是则用户身份验证成功,否则用户身份验证失败;加密设备对用户身份验证成功之后开始工作;
相应的,在步骤T2具体为:加密设备对保存的密码进行哈希运算得到密码哈希值,根据该密码哈希值生成第一密钥、第二密钥和参数值并保存,继续执行步骤S2或执行步骤S5。
本实施例的方法还包括:
步骤L1:当加密设备接收到终端设备发送的读数据指令时,加密设备根据读数据指令中的扇区地址判断待读取数据的位置是否是起始扇区,是则执行步骤L5,否则执行步骤L2;
步骤L2:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,根据读数据指令中的扇区地址计算起始待读取数据块的编号;
步骤L3:加密设备判断更新当前中间数据的次数是否与起始待读取数据块的编号匹配,是则执行步骤L6,否则执行步骤L4;
步骤L4:加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤L3;
步骤L5:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据, 执行步骤L6;
步骤L6:加密设备将与读数据指令中扇区地址对应的扇区中的起始数据块作为当前待读取数据块;
步骤L7:加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
在本实施例中,加密设备根据当前待读取数据块与当前中间数据生成最终数据,具体为:加密设备将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行解密得到第一解密结果,将第一解密结果与当前中间数据进行异或运算得到最终数据;
步骤L8:加密设备判断是否读取到所有的数据块,是则读取数据完成,否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将扇区中的下一个数据块作为当前待读取数据块,返回步骤L7。
实施例二
本发明实施例二提供一种数据加密存储的实现方法,待写入数据的长度小于等于扇区的大小,即只需一个扇区就能存储待写入数据,如待写入数据的长度小于扇区的大小,则终端需在待写入数据的结尾填充0直到数据长度等于扇区的大小然后下发给加密设备,即加密设备接收到的数据的长度为扇区的大小的整数倍,加密设备按照扇区的大小对待写入数据进行分块,然后依次对每个数据块进行加密处理,最后将处理结果写入扇区,例如本实施例中扇区的大小为512bit,扇区的大小为16bit,则待写入数据被分成32个数据块,如图2所示,本实施例的方法具体包括:
步骤101:当加密设备接收到终端设备发送的指令时,判断指令的类型,如为写数据指令则执行步骤102,如为读数据指令则执行步骤115;
具体的,在本实施例中,加密设备根据指令中的第16字节上的数据判断指令的类型,如为第一预设值则为写数据指令,如为第二预设值则为读数据指令;可选的,第一预设值为2a,第二预设值为28;
例如,接收到的指令为
55 53 42 43 70 34 f0 d8 00 02 00 00 00 00 10 2a 00 00 00 00 00 00 0001 00 00 00 00 00 00 00
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 1617 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 3637 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 5657 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 7677 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 9697 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6f7 f8 f9 fa fb fc fd fe ff
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 1617 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 3637 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 5657 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 7677 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 9697 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6f7 f8 f9 fa fb fc fd fe ff;
其中前15个字节数据55 53 42 43 70 34 f0 d8 00 02 00 00 00 00 10为指令头,第16字节上的数据为2a判断接收到的指令为写数据指令,第18-21字节上的数据为要写入的扇区地址(高位在左)00 00 00 00;第23-24字节上的数据为要写入数据的长度00 01,表示待写入数据要写在一个扇区;第32字节之后的数据为待写入数据,具体为:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 1617 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 3637 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 5657 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 7677 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 9697 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6f7 f8 f9 fa fb fc fd fe ff
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 1617 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 3637 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 5657 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 7677 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 9697 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6f7 f8 f9 fa fb fc fd fe ff;
例如,接收到的读数据指令为55 53 42 43 e0 73 21 d8 00 02 00 00 80 00 1028 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ,其中前15个字节数据55 53 4243 e0 73 21 d8 00 02 00 00 80 00 10为指令头,第16字节上的数据为28判断接收到的指令为读数据指令,第18-21字节上的数据为待读取的扇区地址(高位在左)00 00 00 00;第23-24字节上的数据为待读取数据的长度00 01,表示读取一整个扇区中的数据;
可选的,在本实施例中的步骤101之前可包括:
步骤P1:当加密设备检测到与终端设备第一次建立连接时,提示用户设置加密硬盘的密码,当接收到用户输入的密码时对用户输入的密码进行哈希运算得到密码哈希值并保存;
例如,本实施例中用户输入的密码为123456,密码哈希值为20 7c f4 10 53 2f92 a4 7d ee 24 5c e9 b1 1f f7 1f 57 8e bd 76 3e b3 bb ea 44 eb d0 43 d0 18fb;
如步骤P1之后加密设备与终端设备断开连接,则步骤P1之后执行步骤P2,如步骤P1之后加密设备与终端设备未断开连接,则则步骤P1之后直接执行步骤101;
步骤P2:当加密设备与终端设备断开再次建立连接时,加密设备对用户身份进行验证,如验证成功则执行步骤101,如验证失败则报错;
其中,加密设备对用户身份进行验证,包括:加密设备提示用户输入密码,当接收到用户输入的密码时,对密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败;
步骤102:加密设备根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则执行步骤103,否则执行步骤106;
具体的,起始扇区为0号扇区;例如本实施例中的扇区地址为00 00 00 00则判断待写入数据的写入位置是起始扇区,执行步骤103;
步骤103:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则105,否则执行步骤104;
步骤104:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤105;
具体的,在本实施例中,步骤104包括:加密设备将密码哈希值的前16字节作为第一密钥,将哈希结果的后16字节作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值,执行步骤105;
可选的,本实施例中,也可将密码哈希值的前16字节作为第二密钥,将哈希结果的后16字节作为第一密钥;
例如,本实施例中第一密钥为20 7c f4 10 53 2f 92 a4 7d ee 24 5c e9 b1 1ff7,第二密钥为1f 57 8e bd 76 3e b3 bb ea 44 eb d0 43 d0 18 fb,参数值为3f 2b 7aad 25 11 21 1f 97 aa cf 8c aa 61 07 0c;
步骤105:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,执行步骤111;
例如,加密设备根据预设算法使用保存的第二密钥1f 57 8e bd 76 3e b3 bb ea44 eb d0 43 d0 18 fb,对保存的参数值3f 2b 7a ad 25 11 21 1f 97 aa cf 8c aa 6107 0c进行SM4加密运算得到当前中间数据48 2b ec a6 7f b4 8a 8f 33 5f 42 12 25 7444 5d;
步骤106:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤108,否则执行步骤107;
步骤107:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤108;
步骤108:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,根据写数据指令中的扇区地址计算起始待写入数据块的编号;
具体的,加密设备根据预设算法使用保存的第二密钥对保存的参数值进行SM4加密运算得到当前中间数据;
在本实施例中,128位有限域运算的具体实现过程为:
步骤A1:加密设备将当前中间数据拆分成等长的第一数据和第二数据,
例如,当前中间数据为48 2b ec a6 7f b4 8a 8f 33 5f 42 12 25 74 44 5d,拆分得到的第一数据和第二数据分别为48 2b ec a6 7f b4 8a 8f和33 5f 42 12 25 74 445d;
步骤A2:加密设备分别对第一数据和第二数据调转字节序得到第一转序数据和第二转序数据;
例如,本实施例中的第一转序数据为8f 8a b4 7f a6 ec 2b 48,第二转序数据为5d 44 74 25 12 42 5f 33;
步骤A3:加密设备判断第二转序数据最低位为是否为预定值,是则执行步骤A4,否则执行步骤A6;
例如,预定值为1,本实施例中的第一个数据实例在步骤A3中判断第二转序数据的最低位为1执行步骤A4,本实施例中的第二个数据实例在步骤A3中判断第二转序数据的最低位不为1执行步骤A6;
步骤A4:加密设备将第一转序数据右移一位,并将右移结果与第一预设值进行异或运算得到第一中间值,将第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第二中间值;
例如,本实施例中的第一预设值为0xE100000000000000,得到的第一中间值为0xc515f6533fda4547;得到的第二中间值为0x99afa10912ba222e;
步骤A5:加密设备分别将第一中间值和第二中间值调转字节序得到第一转序中间值和第二转序中间值,将第一转序中间值与第二转序中间值顺序拼接得到运算结果;
例如,该步骤中的运算结果为c5 15 f6 53 3f da 45 47 99 af a1 09 12 ba 222e;
步骤A6:加密设备将第一转序数据右移一位得到第三中间值,将第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第四中间值;
步骤A7:加密设备分别将第三中间值和第四中间值调转字节序得到第三转序中间值和第四转序中间值,将第三转序中间值与第四转序中间值顺序拼接得到运算结果;
具体的,在本实施例中,根据写数据指令中的扇区地址计算要待写入数据块的编号,包括:加密设备用扇区地址乘以扇区的大小得到待写入数据的写入位置,用待写入数据的写入位置除以扇区的大小得到起始待写入数据块的编号;
例如,本实施例中的扇区地址为00 00 00 64,将其将转为十进制数100,扇区的大小为512bit,则运算得到待写入数据的写入位置为51200,扇区的大小为16bit,最后运算得到起始待写入数据块的编号为3200;
步骤109:加密设备判断更新当前中间数据的次数是否与待写入数据块的编号匹配,是则执行步骤111,否则执行步骤110;
步骤110:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤109;
步骤111:加密设备根据扇区的大小对待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
例如,本实施例中扇区的大小为16bit,待写入数据的长度为512bit,步骤111中将待写入数据进行分块得到32个数据块,分别为00 01 02 03 04 05 06 07 08 09 0a 0b 0c0d 0e 0f、10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f、20 21 22 23 24 25 2627 28 29 2a 2b 2c 2d 2e 2f、30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f、40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f、50 51 52 53 54 55 56 57 58 595a 5b 5c 5d 5e 5f、60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f、70 71 72 7374 75 76 77 78 79 7a 7b 7c 7d 7e 7f、80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d8e 8f、90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f、a0 a1 a2 a3 a4 a5 a6 a7a8 a9 aa ab ac ad ae af、b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf、c0 c1c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf、d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da dbdc dd de df、e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef、f0 f1 f2 f3 f4 f5f6 f7 f8 f9 fa fb fc fd fe ff、00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f、20 21 22 23 24 25 26 27 28 292a 2b 2c 2d 2e 2f、30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f、40 41 42 4344 45 46 47 48 49 4a 4b 4c 4d 4e 4f、50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d5e 5f、60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f、70 71 72 73 74 75 76 7778 79 7a 7b 7c 7d 7e 7f、80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f、90 9192 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f、a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa abac ad ae af、b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf、c0 c1 c2 c3 c4 c5c6 c7 c8 c9 ca cb cc cd ce cf、d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd dedf、e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef、f0 f1 f2 f3 f4 f5 f6 f7 f8f9 fa fb fc fd fe ff;将00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f作为当前待写入数据块;
步骤112:加密设备根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
在本实施例中,加密设备根据当前待写入数据块与当前中间数据生成最终数据,具体为:加密设备将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据;
例如,加密设备将当前待写入数据块00 01 02 03 04 05 06 07 08 09 0a 0b 0c0d 0e 0f与当前中间数据做异或运算得到第一异或结果48 2a ee a5 7b b1 8c 88 3b 5648 19 29 79 4a 52,根据预设算法使用保存的第一密钥20 7c f4 10 53 2f 92 a4 7d ee24 5c e9 b1 1f f7对第一异或结果进行加密得到第一加密结果4a f3 2d 3a 29 83 ff46 ee f9 e5 7f 35 19 f2 7f,将第一加密结果与当前中间数据进行异或运算得到最终数据02 d8 c1 9c 56 37 75 c9 dd a6 a7 6d 10 6d b6 22;
步骤113:加密设备判断待写入数据是否写入完成,是则写入数据完成;否则执行步骤114;
在本实施例中,加密设备判断待写入数据块是否写入完成,具体为:加密设备判断第一计数值是否等于数据块的数量,是则待写入数据块写入完成,否则待写入数据块未写入完成;相应的,在步骤111中还包括:更新第一计数值,例如第一计数值自加1;
例如,在本实施例中,扇区中存储的最终数据为02 d8 c1 9c 56 37 75 c9 dd a6a7 6d 10 6d b6 22 e6 1d 5c 5b d8 87 cd e9 2b 5d f0 e0 28 20 fe a5
44 5c 23 21 a5 bf 52 c4 ca 05 3d da 94 6a a5 b7 8d 56 a6 81 15 f2 cd43 a1 37 d6 fc 70 4b 61 3c
cb e4 6a 9f 2b 41 20 19 dc 5a 84 51 69 64 83 d5 00 a3 11 1f 81 2c ac29 be dd 07 6c 1d a2 89 64
b6 f9 9e da 19 9e 1a eb 58 ef 11 ff b3 5c ca b7 be 28 5e de ce 2c 63f7 6b f2 1f 3b c7 c3 c5 24
4f 9c 8c 9f ff f2 ca cc 19 44 0d 77 b9 37 63 69 88 2d 5b 40 af ae 95c1 b0 60 8c 75 2f 2f 6d 87
c0 33 a2 bf 85 51 e9 ad f3 02 9a ce 82 44 c4 8d df e0 f8 c6 08 43 6391 37 30 b0 55 eb 7c 7d 5e
23 87 f7 a5 7c e4 a4 42 9d 13 27 18 d0 5c 45 fd f3 3f ce 01 41 f3 0bce 93 11 86 98 34 02 f9 32
81 40 34 67 33 00 ad 76 40 ee fe ac ce 88 82 3d 4d 9a ee 9c 59 7e af1d cb 0e de 9c 39 88 00 35
74 af 8a 3c a7 5c 61 3c 7b a6 25 c5 4c 35 04 35 f6 7d 11 38 eb ed 75ce a7 e4 33 d5 2e cb 69 86
9a 05 77 52 0e 5b 33 ff 3b 14 6f 7e b2 ef 40 d0 97 a6 78 8b 4c 38 b822 e4 ff 00 6d 8f af 56 7e
04 b2 fc cd ae 60 ff 4f 37 6e fa cf 46 b4 a2 e7 ac f4 94 a8 95 90 8546 1a 10 e1 a1 60 6f af 11
6a 3a 77 95 a2 06 65 25 d4 49 e2 0d 2f 9f 44 05 3d 69 1e ff d7 66 2968 4f 0c 0b 02 ff 33 3b db
ee 35 f7 3c 22 23 5a a5 08 cb d3 af 33 ed ab a2 e9 11 2d a3 5c ed 0195 2e 7f fb ad 6e 13 e4 1b
2b 7a 2b a4 cc 1a 81 76 e1 65 9f 38 2b 37 69 42 20 45 3d 71 e7 8f cc53 3c 2c 56 f0 58 76 71 80
f1 bf 93 7c 84 2c f9 de f7 58 64 58 cd 43 34 5d c9 07 4f a1 38 ce 54b6 df 57 93 19 2a 79 f7 41
4b d6 a5 41 f6 38 f3 7b c6 96 a9 f7 6e 88 ca 7b 21 06 19 c3 8c 0a 2a9a 71 ef ab 52 46 5f 16 9e;
步骤114:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,返回步骤112;
例如,在步骤114中更新之后的当前中间数据为c5 15 f6 53 3f da 45 47 99 afa1 09 12 ba 22 2e,将10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f块作为当前待写入数据块;
步骤115:加密设备根据读数据指令中的扇区地址判断待读取数据的位置是否是起始扇区,是则执行步骤116,否则执行步骤119;
具体的,起始扇区为0号扇区;例如本实施例中的扇区地址为00 00 00 00则判断待读取数据的读取位置是非起始扇区,执行步骤119;
步骤116:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则118,否则执行步骤117;
步骤117:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤118;
步骤118:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,执行步骤124;
例如,加密设备根据预设算法使用保存的第二密钥1f 57 8e bd 76 3e b3 bb ea44 eb d0 43 d0 18 fb,对保存的参数值3f 2b 7a ad 25 11 21 1f 97 aa cf 8c aa 6107 0c进行SM4加密运算得到当前中间数据48 2b ec a6 7f b4 8a 8f 33 5f 42 12 25 7444 5d;
步骤119:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则121,否则执行步骤120;
步骤120:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤121;
步骤121:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,根据读数据指令中的扇区地址计算起始待读取数据块的编号;
具体的,在本实施例中,根据读数据指令中的扇区地址计算要待读取数据块的编号,包括:加密设备用扇区地址乘以扇区的大小得到待读取数据的读取位置,用待读取数据的读取位置除以扇区的大小得到起始待读取数据块的编号;例如扇区地址为00 00 00 64,将其将转为十进制数100,扇区的大小为512bit,则运算得到待读取数据的读取位置为51200,扇区的大小为16bit,最后运算得到起始待读取数据块的编号为3200;
步骤122:加密设备判断更新当前中间数据的次数是否与起始待读取数据块的编号匹配,是则执行步骤124,否则执行步骤123;
步骤123:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤122;
步骤124:加密设备将与扇区地址对应的扇区中的起始数据块作为当前待读取数据块;
例如,该步骤中的待读取数据块为02 d8 c1 9c 56 37 75 c9 dd a6 a7 6d 106d b6 22;
步骤125:加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
在本实施例中,加密设备根据当前待读取数据块与当前中间数据生成最终数据,具体为:加密设备将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行解密得到第一解密结果,将第一解密结果与当前中间数据进行异或运算得到最终数据;
例如,本实施例中加密设备将当前待读取数据块02 d8 c1 9c 56 37 75 c9 dda6 a7 6d 10 6d b6 22与当前中间数据48 2b ec a6 7f b4 8a 8f 33 5f 42 12 25 7444 5d做异或运算得到第一异或结果4a f3 2d 3a 29 83 ff 46 ee f9 e5 7f 35 19 f27f,根据预设算法使用保存的第一密钥20 7c f4 10 53 2f 92 a4 7d ee 24 5c e9 b1 1ff7对第一异或结果4a f3 2d 3a 29 83 ff 46 ee f9 e5 7f 35 19 f2 7f进行解密得到第一解密结果48 2a ee a5 7b b1 8c 88 3b 56 48 19 29 79 4a 52,将第一解密结果48 2aee a5 7b b1 8c 88 3b 56 48 19 29 79 4a 52与当前中间数据48 2b ec a6 7f b4 8a8f 33 5f 42 12 25 74 44 5d进行异或运算得到最终数据00 01 02 03 04 05 06 07 0809 0a 0b 0c 0d 0e 0f;
步骤126:加密设备判断是否读取到所有的数据块,是则读取数据完成,否则执行步骤127;
例如,本实施例中最终读取到的所有数据为00 01 02 03 04 05 06 07 08 09 0a0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 3637 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 5657 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 7677 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 9697 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6f7 f8 f9 fa fb fc fd fe ff
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 1617 18 19 1a 1b 1c 1d 1e 1f
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 3637 38 39 3a 3b 3c 3d 3e 3f
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 5657 58 59 5a 5b 5c 5d 5e 5f
60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 7677 78 79 7a 7b 7c 7d 7e 7f
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 9697 98 99 9a 9b 9c 9d 9e 9f
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6b7 b8 b9 ba bb bc bd be bf
c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6d7 d8 d9 da db dc dd de df
e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6f7 f8 f9 fa fb fc fd fe ff;
步骤127:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,将扇区中的下一个数据块作为当前待读取数据块,返回步骤125;
例如,该步骤中更新后的当前中间数据为c5 15 f6 53 3f da 45 47 99 af a109 12 ba 22 2e,当前待读取数据块为e6 1d 5c 5b d8 87 cd e9 2b 5d f0 e0 28 20 fea5,返回步骤121中,加密设备将当前待读取数据块e6 1d 5c 5b d8 87 cd e9 2b 5d f0e0 28 20 fe a5与当前中间数据4c5 15 f6 53 3f da 45 47 99 af a1 09 12 ba 22 2e做异或运算得到第一异或结果23 08 aa 08 e7 5d 88 ae b2 f2 51 e9 3a 9a dc 8b,根据预设算法使用保存的第一密钥20 7c f4 10 53 2f 92 a4 7d ee 24 5c e9 b1 1f f7对第一异或结果23 08 aa 08 e7 5d 88 ae b2 f2 51 e9 3a 9a dc 8b进行解密得到第一解密结果d5 04 e4 40 2b cf 53 50 81 b6 bb 12 0e a7 3c 31,将第一解密结果d5 04 e440 2b cf 53 50 81 b6 bb 12 0e a7 3c 31与当前中间数据4c5 15 f6 53 3f da 45 4799 af a1 09 12 ba 22 2e进行异或运算得到最终数据10 11 12 13 14 15 16 17 18 191a 1b 1c 1d 1e 1f。
本实施例中通过将待写入数据进行分块,对各个数据块分别进行加密计算后存储,提高数据写入的安全性;且每个数据块的加密计算涉及的当前中间数据均不同,更进一步地提高数据写入的安全性。读取过程为写入过程的逆过程,用户处理数据安全方便。
实施例三
本发明实施例三提供一种数据加密存储的实现方法,如待写入数据的长度超过一个扇区的大小时,则写入待写入数据就需要多个扇区,即需要对待写入数据进行分段,然后分别对每个数据分段进行分块成数据块,依次对每个数据块进行加密处理后存储到扇区中,如图3所示,本实施例的方法包括:
步骤201:当加密设备接收到终端设备发送的指令时,判断指令的类型,如为写数据指令则执行步骤202,如为读数据指令则执行步骤218;
具体的,在本实施例中,加密设备根据指令中的第16字节上的数据判断指令的类型,如为第一预设值则为写数据指令,如为第二预设值则为读数据指令;可选的,第一预设值为2a,第二预设值为28;
可选的,在本实施例中的步骤201之前可包括:
步骤Y1:当加密设备检测到与终端设备第一次建立连接时,提示用户设置加密硬盘的密码,当接收到用户输入的密码时对用户输入的密码进行哈希运算得到密码哈希值并保存;
例如,本实施例中用户输入的密码为123456,密码哈希值为20 7c f4 10 53 2f92 a4 7d ee 24 5c e9 b1 1f f7 1f 57 8e bd 76 3e b3 bb ea 44 eb d0 43 d0 18fb;
如步骤Y1之后加密设备与终端设备断开连接,则步骤Y1之后执行步骤Y2,如步骤Y1之后加密设备与终端设备未断开连接,则则步骤Y1之后直接执行步骤201;
步骤Y2:当加密设备与终端设备断开再次建立连接时,加密设备对用户身份进行验证,如验证成功则执行步骤201,如验证失败则报错;
其中,加密设备对用户身份进行验证,包括:加密设备提示用户输入密码,当接收到用户输入的密码时,对密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败;
步骤202:加密设备从写数据指令中获取待写入数据,并判断待写入数据的长度是否大于扇区的大小,是则根据扇区的大小对待写入数据进行分段,并将第一个数据段作为当前待写入数据段,执行步骤203,否则将待写入数据作为当前待写入数据段,执行步骤203;
步骤203:加密设备根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则执行步骤204,否则执行步骤207;
步骤204:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤206,否则执行步骤205;
步骤205:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤206;
具体的,在本实施例中,步骤205包括:加密设备将密码哈希值的前16字节作为第一密钥,将哈希结果的后16字节作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值,执行步骤206;
可选的,本实施例中,也可将密码哈希值的前16字节作为第二密钥,将哈希结果的后16字节作为第一密钥;
步骤206:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,执行步骤212;
步骤207:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤209,否则执行步骤208;
步骤208:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤209;
步骤209:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,根据写数据指令中的扇区地址计算起始待写入数据块的编号;
具体的,在本实施例中,根据写数据指令中的扇区地址计算要待写入数据块的编号,包括:加密设备用扇区地址乘以扇区的大小得到待写入数据的写入位置,用待写入数据的位置除以扇区的大小得到起始待写入数据块的编号;
本实施例中的128位有限域乘法运算与实施例一的相同,在此不再赘述;
步骤210:加密设备判断更新当前中间数据的次数是否与待写入数据块的编号匹配,是则执行步骤212,否则执行步骤211;
步骤211:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤210;
步骤212:加密设备根据扇区的大小对当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
步骤213:加密设备根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到相邻空闲扇区中;
在本实施例中,加密设备根据当前待写入数据块与当前中间数据生成最终数据,具体为:加密设备将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据;
步骤214:加密设备判断当前待写入数据段是否均写入完成,是则执行步骤216;否则执行步骤215;
在本实施例中,加密设备判断待写入数据块是否写入完成,具体为:加密设备判断第一计数值是否等于数据块的数量,是则待写入数据块写入完成,否则待写入数据块未写入完成;相应的,在步骤213中还包括:更新第一计数值,例如第一计数值自加1;
步骤215:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,返回步骤213;
步骤216:加密设备判断待写入数据是否全部写入成功,是则写入数据完成,否则执行步骤217;
步骤217:加密设备将下一个数据段作为当前待写入数据段,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤212;
步骤218:加密设备根据读数据指令中的扇区地址判断待读取数据的位置是否是起始扇区,是则执行步骤219,否则执行步骤222;
步骤219:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤221,否则执行步骤220;
步骤220:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤221;
步骤221:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,执行步骤227;
步骤222:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤224,否则执行步骤223;
步骤223:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤224;
步骤224:加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,根据读数据指令中的扇区地址计算起始待读取数据块的编号;
具体的,在本实施例中,根据读数据指令中的扇区地址计算要待读取数据块的编号,包括:加密设备用扇区地址乘以扇区的大小得到待读取数据的读取位置,用待读取数据的读取位置除以扇区的大小得到起始待读取数据块的编号;
步骤225:加密设备判断更新当前中间数据的次数是否与起始待读取数据块的编号匹配,是则执行步骤227,否则执行步骤226;
步骤226:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤225;
步骤227:加密设备将与扇区地址对应的扇区中的起始数据块作为当前待读取数据块;
步骤228:加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
在本实施例中,加密设备根据当前待读取数据块与当前中间数据生成最终数据,具体为:加密设备将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第二密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据;
步骤229:加密设备判断是否读取到当前扇区的所有数据块,是则执行步骤231,否则执行步骤230;
步骤230:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,将扇区中的下一个数据块作为当前待读取数据块,返回步骤228;
步骤231:加密设备根据读数据指令中的待读取数据的长度判断是否读取到所有数据块,是则读取数据完成,否则执行步骤232;
步骤232:加密设备将下一个扇区的起始数据块作为当前待读取数据块,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤227。
本实施例中通过先对待写入数据进行分段,在对每个数据段进行分块,对各个数据块分别进行加密处理后存储,提高数据存储的安全性;且对每个数据块进行加密处理使用的当前中间数据均不同,更进一步地提高数据写入的安全性。读取过程为写入过程的逆过程,存储和读取数据安全方便。
实施例四
本发明实施例四提供一种数据加密存储的实现方法,在实施例二的基础上,为提高处理数据的速度,将多个扇区组成一个分区,在不同分区写入数据或读取不同分区中的数据块,使用不同的第二密钥,即每个分区对应一个第二密钥,提高存储数据或读取数据的速度,减少设备负担。本实施例方法如图4和图5所示,包括:
步骤301:当加密设备接收到终端设备发送的指令时,判断指令的类型,如为写数据指令则执行步骤302,如为读数据指令则执行步骤323;
具体的,在本实施例中,加密设备根据指令中的第16字节上的数据判断指令的类型,如为第一预设值则为写数据指令,如为第二预设值则为读数据指令;可选的,第一预设值为2a,第二预设值为28;
例如,本实施例中的写数据指令为:55 53 42 43 70 34 f0 d8 00 02 00 00 0000 10 2a 00 00 00 13 88 00 0f a0 00 00 00 00 00 00 00 ……;
例如,接收到的读数据指令为55 53 42 43 e0 73 21 d8 00 02 00 00 80 00 1028 00 00 00 13 88 00 0f a0 00 00 00 00 00 00 00 ……;
可选的,在本实施例中的步骤301之前可包括:
步骤T1:当加密设备检测到与终端设备第一次建立连接时,提示用户设置加密硬盘的密码,当接收到用户输入的密码时对用户输入的密码进行哈希运算得到密码哈希值并保存;
例如,本实施例中用户输入的密码为123456,密码哈希值为20 7c f4 10 53 2f92 a4 7d ee 24 5c e9 b1 1f f7 1f 57 8e bd 76 3e b3 bb ea 44 eb d0 43 d0 18fb;
如步骤T1之后加密设备与终端设备断开连接,则步骤T1之后执行步骤T2,如步骤T1之后加密设备与终端设备未断开连接,则则步骤T1之后直接执行步骤301;
步骤T2:当加密设备与终端设备断开再次建立连接时,加密设备对用户身份进行验证,如验证成功则执行步骤301,如验证失败则报错;
其中,加密设备对用户身份进行验证,包括:加密设备提示用户输入密码,当接收到用户输入的密码时,对密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败;
步骤302:加密设备从写数据指令中获取待写入数据,并判断写数据指令中的待写入数据长度是否大于分区的大小,是则根据分区的大小对待写入数据进行分区,并将第一个分区数据作为当前分区数据,执行步骤303,否则将待写入数据作为当前分区数据,执行步骤303;
例如,本实施例中,写数据指令中的待写入数据长度为0f a0(2048000bit,即写入待写入数据需要4000个扇区),分区的大小为1MB(即2000个扇区组成一个分区),则步骤306中的判断结果为待写入数据的长度大于分区的大小,需要根据分区的大小对待写入数据进行分区;
步骤303:加密设备将写数据指令中的扇区地址所在分区作为当前分区,将扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则执行步骤304,否则执行步骤307;
具体的,在本实施例中,步骤303包括:加密设备判断扇区地址是否在0~1999之内,是则当前分区是起始分区,执行步骤304,否则当前分区不是起始分区,执行步骤307;
例如,本实施例中写数据指令中待写入数据位置为0x13 88(第5000个扇区),则303判断当前分区不是起始分区;
步骤304:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤306,否则执行步骤305;
步骤305:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤306;
具体的,在本实施例中,步骤305包括:加密设备将密码哈希值的前16字节作为第一密钥,将哈希结果的后16字节作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值,执行步骤306;
可选的,本实施例中,也可将密码哈希值的前16字节作为第二密钥,将哈希结果的后16字节作为第一密钥;
步骤306:加密设备将保存的第二密钥作为当前分区的第二密钥,执行步骤310;
步骤307:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤309,否则执行步骤308;
步骤308:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤309;
具体的,在本实施例中,步骤308包括:加密设备将密码哈希值的前16字节作为第一密钥,将哈希结果的后16字节作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值,执行步骤309;
可选的,本实施例中,也可将密码哈希值的前16字节作为第二密钥,将哈希结果的后16字节作为第一密钥;
步骤309:加密设备根据写数据指令中的扇区地址计算当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,执行步骤310;
具体的,在本实施例中,步骤309中的加密设备根据写数据指令中的扇区地址计算当前分区的编号,包括:加密设备用扇区地址与分区的大小进行取模运算,并将取模结果加1的结果作为当前分区的编号;
例如,本实施例中写数据指令中的扇区地址为0x13 88,即从第5000个扇区开始写入数据;每个分区的大小为2000个扇区,扇区地址与分区的大小进行取模运算的取模结果为1,则当前分区的编号为3(0x03);
步骤310:加密设备根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据;
步骤311:加密设备判断当前扇区是否为当前分区的起始扇区,是则执行步骤314,否则执行步骤312;
具体的,在本实施例中,步骤311包括:加密设备判断扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,执行步骤314,否则当前扇区不为当前分区的起始扇区,执行步骤312;
步骤312:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据;
本实施例中的128位有限域乘法运算与实施例一的相同,在此不再赘述;
步骤313:加密设备判断更新当前中间数据的次数是否与扇区地址匹配,是则执行步骤314,否则返回步骤312;
具体的,在本实施例中, 判断更新当前中间数据的次数是否与扇区地址匹配,具体为:将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与乘积运算结果一致,是则匹配,执行步骤314,否则不匹配,返回步骤312;
例如,本实施例中扇区地址转换为十进制数为5000,5000除以2000余数为1000,一个扇区的大小为512bit,每个数据块的大小为16bit,得到扇区计算中间值次数为32,用取余结果与扇区计算中间值次数进行乘积运算的乘积运算结果为32000次;
步骤314:加密设备根据扇区的大小对当前分区数据进行分段,并将第一个数据段作为当前待写入数据段;
步骤315:加密设备根据扇区的大小对当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
具体的,本实施例中的扇区的大小为16bit;
步骤316:加密设备根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到当前扇区中;
在本实施例中,加密设备根据当前待写入数据块与当前中间数据生成最终数据,具体为:加密设备将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据;
如在步骤316中是第一次存储数据则将生成的数据块存储到与扇区地址对应的扇区位置中;
步骤317:加密设备判断当前待写入数据段是否均写入完成,是则执行步骤319;否则执行步骤318;
步骤318:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,返回步骤316;
步骤319:加密设备判断当前扇区是否写满,是则将相邻空闲扇区作为当前扇区,将当前分区数据中的下一个数据段作为当前待写入数据段,返回步骤315,否则执行步骤320;
步骤320:加密设备判断待当前分区数据是否全部写入完成,是则执行步骤321,否则将当前分区数据中的下一个数据段作为当前待写入数据段,返回步骤315;
步骤321:加密设备判断待写入数据是否全部写入完成,是则写入数据完成,否则执行步骤322;
步骤322:加密设备将下一个分区数据作为当前分区数据,更新当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤314;
步骤323:加密设备将读数据指令中的扇区地址所在分区作为当前分区,将扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则执行步骤324,否则执行步骤327;
具体的,在本实施例中,步骤323包括:加密设备判断扇区地址是否在0~1999之内,是则当前分区是起始分区,执行步骤324,否则当前分区不是起始分区,执行步骤327;
例如,本实施例中读数据指令中待写入数据位置为0x13 88(第5000个扇区),则步骤323判断当前分区不是起始分区;
步骤324:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤326,否则执行步骤325;
步骤325:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤326;
具体的,在本实施例中,步骤325包括:加密设备将密码哈希值的前16字节作为第一密钥,将哈希结果的后16字节作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值,执行步骤326;
可选的,本实施例中,也可将密码哈希值的前16字节作为第二密钥,将哈希结果的后16字节作为第一密钥;
步骤326:加密设备将保存的第二密钥作为当前分区的第二密钥,执行步骤330;
步骤327:加密设备判断是否保存有第一密钥、第二密钥和参数值,是则执行步骤329,否则执行步骤328;
步骤328:加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存,执行步骤329;
具体的,在本实施例中,步骤328包括:加密设备将密码哈希值的前16字节作为第一密钥,将哈希结果的后16字节作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值,执行步骤329;
可选的,本实施例中,也可将密码哈希值的前16字节作为第二密钥,将哈希结果的后16字节作为第一密钥;
步骤329:加密设备根据写数据指令中的扇区地址计算当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,执行步骤330;
具体的,在本实施例中,步骤329中的加密设备根据读数据指令中的扇区地址计算当前分区的编号,包括:加密设备用扇区地址与分区的大小进行取模运算,并将取模结果加1的结果作为当前分区的编号;
例如,本实施例中读数据指令中的扇区地址为0x13 88,即从第5000个扇区开始读取数据;每个分区的大小为2000个扇区,扇区地址与分区的大小进行取模运算的取模结果为1,则当前分区的编号为3(0x03);
步骤330:加密设备根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据;
本实施例中的128位有限域乘法运算与实施例一的相同,在此不再赘述;
步骤331:加密设备判断当前扇区是否为当前分区的起始扇区,是则执行步骤334,否则执行步骤332;
具体的,在本实施例中,步骤331包括:加密设备判断扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,执行步骤334,否则当前扇区不为当前分区的起始扇区,执行步骤332;
步骤332:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据;
本实施例中的128位有限域乘法运算与实施例一的相同,在此不再赘述;
步骤333:加密设备判断更新当前中间数据的次数是否与扇区地址匹配,是则执行步骤334,否则返回步骤332;
具体的,在本实施例中,判断更新当前中间数据的次数是否与扇区地址匹配,具体为:将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与乘积运算结果一致,是则匹配,执行步骤334,否则不匹配,返回步骤332;
例如,本实施例中扇区地址转换为十进制数为5000,5000除以2000余数为1000,一个扇区的大小为512bit,每个数据块的大小为16bit,得到扇区计算中间值次数为32,用取余结果与扇区计算中间值次数进行乘积运算的乘积运算结果为32000次;
步骤334:加密设备将当前扇区中的起始数据块作为当前待读取数据块;
步骤335:加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
在本实施例中,加密设备根据当前待读取数据块与当前中间数据生成最终数据,具体为:加密设备将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第二密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据;
步骤336:加密设备判断是否读取到当前扇区的所有数据块,是则执行步骤338,否则执行步骤337;
步骤337:加密设备对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,返回步骤335;
步骤338:加密设备根据读数据指令中的待读取数据的长度判断是否读取到所有数据,是则读取数据完成,否则执行步骤339;
步骤339:加密设备判断是否读取完当前分区的扇区,是则执行步骤340,否则执行步骤341;
步骤340:加密设备将下一个分区作为当前分区,将当前分区的起始扇区作为当前扇区,更新当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤334;
步骤341:加密设备将当前分区的下一个扇区作为当前扇区,将当前扇区的的起始数据块作为当前待读取数据块,对当前中间数据进行128位有限域乘法运算并用运算结果更新当前中间数据,返回步骤334。
本实施例中通过先对待写入数据进行分段,在对每个数据段进行分块,对各个数据块分别进行计算后存储,提高数据写入的安全性;且对每个数据块的计算涉及的当前中间数据均不同,更进一步地提高数据写入的安全性;每个分区使用各自的第二密钥均不同,进一步地提高了数据存储的速度。读取过程为写入过程的逆过程,读取数据安全方便。
实施例五
本发明实施例五提供一种数据加密存储的实现装置,如图6所示,包括:
第一接收判断模块601,用于当加密设备接收到终端设备发送的写数据指令时,根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则触发第一加密更新模块605,否则触发第一加密计算模块602;
第一加密计算模块602,用于根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,还用于根据写数据指令中的扇区地址计算起始待写入数据块的编号;
第一判断模块603,用于判断更新当前中间数据的次数是否与待写入数据块的编号匹配,是则触发第一分块模块606,否则触发第一运算更新模块604;
第一运算更新模块604,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第一判断模块603;
第一加密更新模块605,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第一分块模块606;
第一分块模块606,用于根据数据块的长度对写数据指令中的待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
第一生成模块607,用于根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
第一判断更新模块608,用于判断待写入数据是否写入完成,是则写入数据完成;否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,触发第一生成模块607。
在本实施例中,第一生成模块607具体用于将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行加密得到第一加密结果,将第一加密结果与当前中间数据进行异或运算得到最终数据块。
进一步地,本实施例的中的对当前中间数据进行有限域乘法运算,包括:
步骤A1:将当前中间数据拆分成等长的第一数据和第二数据,
步骤A2:分别对第一数据和第二数据调转字节序得到第一转序数据和第二转序数据;
步骤A3:判断第二转序数据最低位为是否为预定值,是则执行步骤A4,否则执行步骤A6;
步骤A4:将第一转序数据右移一位,并将右移结果与第一预设值进行异或运算得到第一中间值,将第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第二中间值;
步骤A5:分别将第一中间值和第二中间值调转字节序得到第一转序中间值和第二转序中间值,将第一转序中间值与第二转序中间值顺序拼接得到运算结果;
步骤A6:将第一转序数据右移一位得到第三中间值,将第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第四中间值;
步骤A7:分别将第三中间值和第四中间值调转字节序得到第三转序中间值和第四转序中间值,将第三转序中间值与第四转序中间值顺序拼接得到运算结果。
本实施例的装置还包括:
设置运算保存模块,用于当加密设备与终端设备第一次建立连接时,提示用户设置加密硬盘的密码,当接收到用户输入的密码时,对用户输入的密码进行哈希运算得到密码哈希值并保存。
本实施例的装置还包括:
验证模块,用于当加密设备与终端设备断开再次建立连接时,对用户身份进行验证,如验证成功则继续,如验证失败则报错。
进一步地,验证模块,具体用于当加密设备与终端设备断开再次建立连接时,提示用户输入密码,当接收到用户输入的密码时,对密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败,报错。
本实施例的装置还包括:
第二接收判断模块,用于当接收到终端设备发送的读数据指令时,根据读数据指令中的扇区地址判断待读取数据的位置是否是起始扇区,是则触发第二加密更新模块,否则触发第二加密计算模块;
第二加密计算模块,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,还用于根据读数据指令中的扇区地址计算起始待读取数据块的编号;
第三判断模块,用于判断更新当前中间数据的次数是否与起始待读取数据块的编号匹配,是则触发第一作为模块,否则触发第二运算更新模块;
第二运算更新模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第三判断模块;
第二加密更新模块,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第一作为模块;
第一作为模块,用于将与读数据指令中扇区地址对应的扇区中的起始数据块作为当前待读取数据块;
第二生成模块,用于根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
第二判断更新模块,用于判断是否读取到所有的数据块,是则读取数据完成,否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将扇区中的下一个数据块作为当前待读取数据块,触发第二生成模块。
进一步地,第二生成模块具体用于将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对第一异或结果进行解密得到第一解密结果,将第一解密结果与当前中间数据进行异或运算得到最终数据块。
进一步地,第二加密计算模块还用于根据读数据指令中的扇区地址计算要待读取数据块的编号,具体为:第二加密计算模块还用于用读数据指令中的扇区地址乘以扇区的大小得到待读取数据的读取位置,用待读取数据的读取位置除以数据块的长度得到起始待读取数据块的编号。
进一步地,第二判断更新模块包括:
第一判断单元,用于判断是否读取到当前扇区的所有数据块,是则触发第二判断单元,否则触发第一运算更新单元;
第一运算更新单元,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,触发第二生成模块;
第二判断单元,用于根据读数据指令中的待读取数据的长度判断是否读取到所有数据,是则读取数据完成,否则触发第二运算更新单元;
第二运算更新单元,用于将下一个扇区作为当前扇区,将当前扇区的起始数据块作为当前待读取数据块,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第二生成模块。
进一步地,本实施例的第一加密计算模块602还用于根据写数据指令中的扇区地址计算要待写入数据块的编号,具体为:第一加密计算模块602还用于用写数据指令中的扇区地址乘以扇区的大小得到待写入数据的写入位置,用待写入数据的写入位置除以数据块的长度得到起始待写入数据块的编号。
本实施例的装置还包括:
第一获取判断模块,用于当接收到终端设备发送的写数据指令时从写数据指令中获取待写入数据,并判断待写入数据的长度是否大于扇区的大小,是则触发第一分段作为模块,否则将待写入数据作为当前待写入数据段,触发第一接收判断模块601;
第一分段作为模块,用于根据扇区的大小对待写入数据进行分段,并将第一个数据段作为当前待写入数据段,触发第一接收判断模块601;
第一分块模块606,具体用于根据数据块的长度对当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
第一判断更新模块608包括:
第三判断单元,用于判断当前待写入数据段是否均写入完成,是则触发第四判断单元;否则触发第三运算更新单元;
第三运算更新单元,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,触发第一生成模块607;
第四判断单元,用于判断待写入数据是否全部写入成功,是则写入完成,否则触发第四运算更新单元;
第四运算更新单元,用于将下一个数据段作为当前待写入数据段,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第一分块模块606。
本实施例的装置还包括:
第一判断分区模块,用于当接收到终端设备发送的写数据指令时,从写数据指令中获取待写入数据,并判断待写入数据的长度是否大于分区的大小,是则根据分区的大小对待写入数据进行分区,并将第一个分区数据作为当前分区数据,触发第一作为判断模块,否则将待写入数据作为当前分区数据,触发第一作为判断模块;
第一作为判断模块,用于将写数据指令中的扇区地址所在分区作为当前分区,将写数据指令中的扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则触发第二作为模块,否则执触发第一计算作为模块;
第二作为模块,用于将保存的第二密钥作为当前分区的第二密钥,触发第三加密更新模块;
第一计算作为模块,用于根据写数据指令中的扇区地址计算当前分区编号,对当前分区编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,触发第三加密更新模块;
第三加密更新模块,用于根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第四判断模块,用于判断当前扇区是否为当前分区的起始扇区,是则触发第二分段作为模块,否则触发第三运算更新模块;
第三运算更新模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第五判断模块,用于判断更新当前中间数据的次数是否与扇区地址匹配,是则触发第二分段作为模块,否则触发第三运算更新模块;
第二分段作为模块,用于根据扇区的大小对当前分区数据进行分段,并将第一个数据段作为当前待写入数据段,触发第一分块模块606;
第一分块模块606,具体用于根据扇区的大小对当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
第一判断更新模块608包括:
第五判断单元,用于判断当前待写入数据段中的数据块是否均写入完成,是则触发第一判断作为单元;否则触发第五运算更新单元;
第五运算更新单元,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,触发第一生成模块607;
第一判断作为单元,用于判断当前扇区是否写满,是则将相邻空闲扇区作为当前扇区,将当前分区数据中的下一个数据段作为当前待写入数据段,触发第一分块模块606,否则触发第二判断作为单元;
第二判断作为单元,用于判断待当前分区数据中的数据段是否全部写入完成,是则触发第六判断单元,否则将当前分区数据中的下一个数据段作为当前待写入数据段,触发第一分块模块606;
第六判断单元,用于判断待写入数据是否全部写入完成,是则写入数据完成,否则触发第一作为计算更新单元;
第一作为计算更新单元,用于将下一个分区数据作为当前分区数据,更新当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第二分段作为模块。
进一步地,第一计算作为模块根据写数据指令中的扇区地址计算当前分区的编号,具体为:第一计算作为模块用写数据指令中的扇区地址除以分区的大小得到商值,并将商值加1的结果作为当前分区的编号。
进一步地,第四判断模块具体用于判断扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,触发第二分段作为模块,否则当前扇区不为当前分区的起始扇区,触发第三运算更新模块。
进一步地,第五判断模块具体用于将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算得到取余结果,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与乘积运算结果一致,是则匹配,触发第二分段作为模块,否则不匹配,触发第三运算更新模块。
本实施例的装置还包括:
第二判断分区模块,用于当接收到终端设备发送的读数据指令时,将读数据指令中的扇区地址所在分区作为当前分区,将读数据指令中的扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是将保存的第二密钥作为当前分区的第二密钥,则触发第四加密更新模块,否则触发第二计算作为模块;
第二计算作为模块,用于根据读数据指令中的扇区地址计算当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,触发第四加密更新模块;
第四加密更新模块,用于根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第六判断模块,用于判断当前扇区是否为当前分区的起始扇区,是则触发第三作为模块,否则触发第二作为模块;
第二作为模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第七判断模块,用于判断更新当前中间数据的次数是否与扇区地址匹配,是则触发第三作为模块,否则触发第二作为模块;
第三作为模块,用于将当前扇区中的起始数据块作为当前待读取数据块,触发第三生成模块;
第三生成模块,用于根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
第八判断模块,用于判断是否读取到当前扇区的所有数据块,是则触发第九判断模块,否则触发第三计算作为模块;
第三计算作为模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,触发第三生成模块;
第九判断模块,用于根据读数据指令中的待读取数据的长度判断是否读取到所有数据块,是则读取数据完成,否则触发第十判断模块;
第十判断模块,用于判断是否读取完当前分区的扇区,是则触发第二作为计算更新模块,否则触发第四计算作为模块;
第二作为计算更新模块,用于将下一个分区作为当前分区,将当前分区的起始扇区作为当前扇区,更新当前分区编号,对当前分区编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用当前分区的第二密钥对保存的参数值进行加密将加密结果作为当前分区的当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第三作为模块;
第四计算作为模块,用于将当前分区中的下一个扇区作为当前扇区,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第三作为模块。
进一步地,第二计算作为模块根据读数据指令中的扇区地址计算当前分区的编号,具体为:第二计算作为模块用读数据指令中的扇区地址除以分区的大小得到商值,并将商值加1的结果作为当前分区的编号。
进一步地,第六判断模块具体用于判断读数据指令中的扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,触发第三作为模块,否则当前扇区不为当前分区的起始扇区,触发第二作为模块。
进一步地,第七判断模块具体用于将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与乘积运算结果一致,是则匹配,触发第三作为模块,否则不匹配,触发第二作为模块。
本实施例的装置还包括:
第二判断模块,用于判断是否保存有第一密钥、第二密钥和参数值;
生成保存模块,用于当第二判断模块判断为否时根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存。
其中,生成保存模块具体用于将密码哈希值分割为等长的两部分,一部分作为第一密钥,另一部分作为第二密钥,将第一密钥与第二密钥做按位异或运算得到参数值,保存第一密钥、第二密钥和参数值。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (47)

1.一种数据加密存储的实现方法,其特征在于,包括:
步骤S1:当加密设备接收到终端设备发送的写数据指令时,根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则执行步骤S5,否则执行步骤S2;
步骤S2:所述加密设备根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,根据写数据指令中的扇区地址计算起始待写入数据块的编号;
步骤S3:所述加密设备判断当前中间数据的更新次数是否与所述待写入数据块的编号匹配,是则执行步骤S6,否则执行步骤S4;
步骤S4:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤S3;
步骤S5:所述加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,执行步骤S6;
步骤S6:所述加密设备根据数据块的长度对所述写数据指令中的待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
步骤S7:所述加密设备根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
步骤S8:所述加密设备判断所述待写入数据是否写入完成,是则写入数据完成;否则所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,返回步骤S7。
2.如权利要求1所述的方法,其特征在于,所述步骤S7包括:所述加密设备将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对所述第一异或结果进行加密得到第一加密结果,将所述第一加密结果与当前中间数据进行异或运算得到最终数据块。
3.如权利要求1所述的方法,其特征在于,所述对当前中间数据进行有限域乘法运算,包括:
步骤A1:所述加密设备将当前中间数据拆分成等长的第一数据和第二数据,
步骤A2:所述加密设备分别对所述第一数据和所述第二数据调转字节序得到第一转序数据和第二转序数据;
步骤A3:所述加密设备判断所述第二转序数据最低位为是否为预定值,是则执行步骤A4,否则执行步骤A6;
步骤A4:所述加密设备将所述第一转序数据右移一位,并将右移结果与第一预设值进行异或运算得到第一中间值,将所述第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第二中间值;
步骤A5:所述加密设备分别将所述第一中间值和所述第二中间值调转字节序得到第一转序中间值和第二转序中间值,将所述第一转序中间值与所述第二转序中间值顺序拼接得到运算结果;
步骤A6:所述加密设备将所述第一转序数据右移一位得到第三中间值,将第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第四中间值;
步骤A7:所述加密设备分别将所述第三中间值和所述第四中间值调转字节序得到第三转序中间值和第四转序中间值,将所述第三转序中间值与所述第四转序中间值顺序拼接得到运算结果。
4.如权利要求1所述的方法,其特征在于,在所述步骤S5和步骤S2之前还包括:
步骤T1:所述加密设备判断是否保存有第一密钥、第二密钥和参数值,是则继续,否则执行步骤T2;
步骤T2:所述加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存。
5.如权利要求1所述的方法,其特征在于,还包括:当所述加密设备与所述终端设备第一次建立连接时,所述加密设备提示用户设置加密硬盘的密码,当接收到用户输入的密码时,所述加密设备对用户输入的密码进行哈希运算得到密码哈希值并保存。
6.如权利要求5所述的方法,其特征在于,还包括:当所述加密设备与所述终端设备断开再次建立连接时,所述加密设备对用户身份进行验证,如验证成功则继续,如验证失败则报错。
7.如权利要求6所述的方法,其特征在于,所述加密设备对用户身份进行验证,包括:所述加密设备提示用户输入密码,当接收到用户输入的密码时,对所述密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
步骤L1:当所述加密设备接收到所述终端设备发送的读数据指令时,根据所述读数据指令中的扇区地址判断待读取数据的位置是否是起始扇区,是则执行步骤L5,否则执行步骤L2;
步骤L2:所述加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,根据所述读数据指令中的扇区地址计算起始待读取数据块的编号;
步骤L3:所述加密设备判断更新当前中间数据的次数是否与所述起始待读取数据块的编号匹配,是则执行步骤L6,否则执行步骤L4;
步骤L4:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤L3;
步骤L5:所述加密设备根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,执行步骤L6;
步骤L6:所述加密设备将与所述读数据指令中扇区地址对应的扇区中的起始数据块作为当前待读取数据块;
步骤L7:所述加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
步骤L8:所述加密设备判断是否读取到所有的数据块,是则读取数据完成,否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将扇区中的下一个数据块作为当前待读取数据块,返回步骤L7。
9.如权利要求8所述的方法,其特征在于,所述加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块,具体为:所述加密设备将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对所述第一异或结果进行解密得到第一解密结果,将所述第一解密结果与当前中间数据进行异或运算得到最终数据块。
10.如权利要求8所述的方法,其特征在于,所述根据所述读数据指令中的扇区地址计算要待读取数据块的编号,包括:所述加密设备用所述读数据指令中的扇区地址乘以扇区的大小得到待读取数据的读取位置,用所述待读取数据的读取位置除以数据块的长度得到起始待读取数据块的编号。
11.如权利要求8所述的方法,其特征在于,所述步骤L8包括:
步骤L81:所述加密设备判断是否读取到当前扇区的所有数据块,是则执行步骤L83,否则执行步骤L82;
步骤L82:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,返回步骤L7;
步骤L83:所述加密设备根据所述读数据指令中的待读取数据的长度判断是否读取到所有数据,是则读取数据完成,否则执行步骤L84;
步骤L84:所述加密设备将下一个扇区作为当前扇区,将当前扇区的起始数据块作为当前待读取数据块,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤L7。
12.如权利要求8所述的方法,其特征在于,在所述步骤L5和步骤L2之前还包括:
步骤T1:所述加密设备判断是否保存有第一密钥、第二密钥和参数值,是则继续,否则执行步骤T2;
步骤T2:所述加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存。
13.如权利要求1所述的方法,其特征在于,所述根据所述写数据指令中的扇区地址计算要待写入数据块的编号,包括:所述加密设备用所述写数据指令中的扇区地址乘以扇区的大小得到待写入数据的写入位置,用所述待写入数据的写入位置除以数据块的长度得到起始待写入数据块的编号。
14.如权利要求1所述的方法,其特征在于,所述步骤S1中的加密设备接收到终端设备发送的写数据指令与所述根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区之间还包括:
步骤K:所述加密设备从写数据指令中获取待写入数据,并判断待写入数据的长度是否大于扇区的大小,是则根据扇区的大小对待写入数据进行分段,并将第一个数据段作为当前待写入数据段,执行步骤S1,否则将待写入数据作为当前待写入数据段,执行步骤S1;
所述步骤S6具体为:所述加密设备根据数据块的长度对所述当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
所述步骤S8具体为:
步骤M1:所述加密设备判断当前待写入数据段是否均写入完成,是则执行步骤M3;否则执行步骤M2;
步骤M2:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,返回步骤S7;
步骤M3:所述加密设备判断待写入数据是否全部写入成功,是则写入完成,否则执行步骤M4;
步骤M4:所述加密设备将下一个数据段作为当前待写入数据段,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤S6。
15.如权利要求1所述的方法,其特征在于,所述步骤S1-步骤S5替换为:
步骤R1:当加密设备接收到终端设备发送的写数据指令时,所述加密设备从所述写数据指令中获取待写入数据,并判断所述待写入数据的长度是否大于分区的大小,是则根据所述分区的大小对所述待写入数据进行分区,并将第一个分区数据作为当前分区数据,执行步骤R2,否则将所述待写入数据作为当前分区数据,执行步骤R2;
步骤R2:所述加密设备将所述写数据指令中的扇区地址所在分区作为当前分区,将所述写数据指令中的扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则执行步骤R3,否则执行步骤R4;
步骤R3:所述加密设备将保存的第二密钥作为当前分区的第二密钥,执行步骤R5;
步骤R4:所述加密设备根据所述写数据指令中的扇区地址计算当前分区编号,对当前分区编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,执行步骤R5;
步骤R5:所述加密设备根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
步骤R6:所述加密设备判断当前扇区是否为当前分区的起始扇区,是则执行步骤R9,否则执行步骤R7;
步骤R7:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
步骤R8:所述加密设备判断更新当前中间数据的次数是否与扇区地址匹配,是则执行步骤R9,否则返回步骤R7;
步骤R9:所述加密设备根据扇区的大小对当前分区数据进行分段,并将第一个数据段作为当前待写入数据段;
所述步骤S6具体为:所述加密设备根据扇区的大小对当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
所述步骤S8包括:
步骤S8-1:所述加密设备判断当前待写入数据段中的数据块是否均写入完成,是则执行步骤S8-3;否则执行步骤S8-2;
步骤S8-2:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,返回步骤S7;
步骤S8-3:所述加密设备判断当前扇区是否写满,是则将相邻空闲扇区作为当前扇区,将当前分区数据中的下一个数据段作为当前待写入数据段,返回步骤S6,否则执行步骤S8-4;
步骤S8-4:所述加密设备判断待当前分区数据中的数据段是否全部写入完成,是则执行步骤S8-5,否则将当前分区数据中的下一个数据段作为当前待写入数据段,返回步骤S6;
步骤S8-5:所述加密设备判断所述待写入数据是否全部写入完成,是则写入数据完成,否则执行步骤S8-6;
步骤S8-6:所述加密设备将下一个分区数据作为当前分区数据,更新当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤R9。
16.如权利要求15所述的方法,其特征在于,所述步骤R4中的所述加密设备根据所述写数据指令中的扇区地址计算当前分区的编号,包括:所述加密设备用所述写数据指令中的扇区地址除以分区的大小得到商值,并将商值加1的结果作为当前分区的编号。
17.如权利要求15所述的方法,其特征在于,所述步骤R6包括:所述加密设备判断扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,执行步骤R9,否则当前扇区不为当前分区的起始扇区,执行步骤R7。
18.如权利要求15所述的方法,其特征在于,所述步骤R8包括:所述加密设备将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算得到取余结果,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与所述乘积运算结果一致,是则匹配,执行步骤R9,否则不匹配,返回步骤R7。
19.如权利要求15所述的方法,其特征在于,在所述步骤R3和R4之前还包括:
步骤T1:所述加密设备判断是否保存有第一密钥、第二密钥和参数值,是则继续,否则执行步骤T2;
步骤T2:所述加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存。
20.如权利要求15所述的方法,其特征在于,所述方法还包括:
步骤K0:当所述加密设备接收到终端设备发送的读数据指令时,将读数据指令中的扇区地址所在分区作为当前分区,将所述读数据指令中的扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则执行步骤K1,否则执行步骤K2;
步骤K1:所述加密设备将保存的第二密钥作为当前分区的第二密钥,执行步骤K3;
步骤K2:所述加密设备根据所述读数据指令中的扇区地址计算当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,执行步骤K3;
步骤K3:所述加密设备根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
步骤K4:所述加密设备判断当前扇区是否为当前分区的起始扇区,是则执行步骤K7,否则执行步骤K5;
步骤K5:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
步骤K6:所述加密设备判断更新当前中间数据的次数是否与扇区地址匹配,是则执行步骤K7,否则返回步骤K5;
步骤K7:所述加密设备将当前扇区中的起始数据块作为当前待读取数据块,执行步骤K8;
步骤K8:所述加密设备根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
步骤K9:所述加密设备判断是否读取到当前扇区的所有数据块,是则执行步骤K11,否则执行步骤K10;
步骤K10:所述加密设备对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,返回步骤K8;
步骤K11:所述加密设备根据所述读数据指令中的待读取数据的长度判断是否读取到所有数据块,是则读取数据完成,否则执行步骤K12;
步骤K12:所述加密设备判断是否读取完当前分区的扇区,是则执行步骤K13,否则执行步骤K14;
步骤K13:所述加密设备将下一个分区作为当前分区,将当前分区的起始扇区作为当前扇区,更新当前分区编号,对当前分区编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前分区的当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤K7;
步骤K14:所述加密设备将当前分区中的下一个扇区作为当前扇区,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,返回步骤K7。
21.如权利要求20所述的方法,其特征在于,所述步骤K2中所述加密设备根据所述读数据指令中的扇区地址计算当前分区的编号,包括:所述加密设备用所述读数据指令中的扇区地址除以分区的大小得到商值,并将商值加1的结果作为当前分区的编号。
22.如权利要求20所述的方法,其特征在于,所述步骤K4包括:所述加密设备判断所述读数据指令中的扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,执行步骤K7,否则当前扇区不为当前分区的起始扇区,执行步骤K5。
23.如权利要求20所述的方法,其特征在于,所述步骤K6包括:所述加密设备将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与乘积运算结果一致,是则匹配,执行步骤K7,否则不匹配,返回步骤K5。
24.如权利要求20所述的方法,其特征在于,在所述步骤K1和步骤K2之前还包括:
步骤T1:所述加密设备判断是否保存有第一密钥、第二密钥和参数值,是则继续,否则执行步骤T2;
步骤T2:所述加密设备根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存。
25.如权利要求4或12或19或24所述的方法,其特征在于,所述步骤T2包括:所述加密设备将保存的密码哈希值分割为等长的两部分,一部分作为第一密钥,另一部分作为第二密钥,将所述第一密钥与所述第二密钥做按位异或运算得到参数值,保存所述第一密钥、所述第二密钥和所述参数值。
26.一种数据加密存储的实现装置,其特征在于,包括:
第一接收判断模块,用于当加密设备接收到终端设备发送的写数据指令时,根据写数据指令中的扇区地址判断待写入数据的写入位置是否是起始扇区,是则触发第一加密更新模块,否则触发第一加密计算模块;
所述第一加密计算模块,用于根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,还用于根据写数据指令中的扇区地址计算起始待写入数据块的编号;
第一判断模块,用于判断更新当前中间数据的次数是否与所述待写入数据块的编号匹配,是则触发第一分块模块,否则触发第一运算更新模块;
所述第一运算更新模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第一判断模块;
所述第一加密更新模块,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第一分块模块;
所述第一分块模块,用于根据数据块的长度对所述写数据指令中的待写入数据进行分块,并将第一个数据块作为当前待写入数据块;
第一生成模块,用于根据保存的第一密钥、当前待写入数据块与当前中间数据生成最终数据块并存储到扇区中;
第一判断更新模块,用于判断所述待写入数据是否写入完成,是则写入数据完成;否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将下一个数据块作为当前待写入数据块,触发所述第一生成模块。
27.如权利要求26所述的装置,其特征在于,所述第一生成模块具体用于将当前待写入数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对所述第一异或结果进行加密得到第一加密结果,将所述第一加密结果与当前中间数据进行异或运算得到最终数据块。
28.如权利要求26所述的装置,其特征在于,所述对当前中间数据进行有限域乘法运算,包括:
步骤A1:将当前中间数据拆分成等长的第一数据和第二数据,
步骤A2:分别对所述第一数据和所述第二数据调转字节序得到第一转序数据和第二转序数据;
步骤A3:判断所述第二转序数据最低位为是否为预定值,是则执行步骤A4,否则执行步骤A6;
步骤A4:将所述第一转序数据右移一位,并将右移结果与第一预设值进行异或运算得到第一中间值,将所述第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第二中间值;
步骤A5:分别将所述第一中间值和所述第二中间值调转字节序得到第一转序中间值和第二转序中间值,将所述第一转序中间值与所述第二转序中间值顺序拼接得到运算结果;
步骤A6:将所述第一转序数据右移一位得到第三中间值,将第二转序数据右移一位并将第一转序数据的最低位赋予右移之后的第二转序数据中的最高位得到第四中间值;
步骤A7:分别将所述第三中间值和所述第四中间值调转字节序得到第三转序中间值和第四转序中间值,将所述第三转序中间值与所述第四转序中间值顺序拼接得到运算结果。
29.如权利要求26所述的装置,其特征在于,还包括:
设置运算保存模块,用于当所述加密设备与所述终端设备第一次建立连接时,提示用户设置加密硬盘的密码,当接收到用户输入的密码时,对用户输入的密码进行哈希运算得到密码哈希值并保存。
30.如权利要求29所述的装置,其特征在于,还包括:
验证模块,用于当所述加密设备与所述终端设备断开再次建立连接时,对用户身份进行验证,如验证成功则继续,如验证失败则报错。
31.如权利要求30所述的装置,其特征在于,所述验证模块,具体用于当所述加密设备与所述终端设备断开再次建立连接时,提示用户输入密码,当接收到用户输入的密码时,对所述密码进行哈希运算得到密码哈希结果;判断保存的密码哈希值与运算得到的密码哈希结果是否一致,是则用户身份验证成功,否则用户身份验证失败,报错。
32.如权利要求26所述的装置,其特征在于,还包括:
第二接收判断模块,用于当接收到所述终端设备发送的读数据指令时,根据所述读数据指令中的扇区地址判断待读取数据的位置是否是起始扇区,是则触发第二加密更新模块,否则触发第二加密计算模块;
所述第二加密计算模块,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密运算并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,还用于根据所述读数据指令中的扇区地址计算起始待读取数据块的编号;
第三判断模块,用于判断更新当前中间数据的次数是否与所述起始待读取数据块的编号匹配,是则触发第一作为模块,否则触发第二运算更新模块;
所述第二运算更新模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第三判断模块;
所述第二加密更新模块,用于根据预设算法使用保存的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第一作为模块;
所述第一作为模块,用于将与所述读数据指令中扇区地址对应的扇区中的起始数据块作为当前待读取数据块;
第二生成模块,用于根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
第二判断更新模块,用于判断是否读取到所有的数据块,是则读取数据完成,否则对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将扇区中的下一个数据块作为当前待读取数据块,触发所述第二生成模块。
33.如权利要求32所述的装置,其特征在于,所述第二生成模块具体用于将当前待读取数据块与当前中间数据做异或运算得到第一异或结果,根据预设算法使用保存的第一密钥对所述第一异或结果进行解密得到第一解密结果,将所述第一解密结果与当前中间数据进行异或运算得到最终数据块。
34.如权利要求32所述的装置,其特征在于,所述第二加密计算模块还用于根据所述读数据指令中的扇区地址计算要待读取数据块的编号,具体为:所述第二加密计算模块还用于用所述读数据指令中的扇区地址乘以扇区的大小得到待读取数据的读取位置,用所述待读取数据的读取位置除以数据块的长度得到起始待读取数据块的编号。
35.如权利要求32所述的装置,其特征在于,所述第二判断更新模块包括:
第一判断单元,用于判断是否读取到当前扇区的所有数据块,是则触发第二判断单元,否则触发第一运算更新单元;
所述第一运算更新单元,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,触发第二生成模块;
第二判断单元,用于根据所述读数据指令中的待读取数据的长度判断是否读取到所有数据,是则读取数据完成,否则触发第二运算更新单元;
所述第二运算更新单元,用于将下一个扇区作为当前扇区,将当前扇区的起始数据块作为当前待读取数据块,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发第二生成模块。
36.如权利要求26所述的装置,其特征在于,所述第一加密计算模块还用于根据所述写数据指令中的扇区地址计算要待写入数据块的编号,具体为:所述第一加密计算模块还用于用所述写数据指令中的扇区地址乘以扇区的大小得到待写入数据的写入位置,用所述待写入数据的写入位置除以数据块的长度得到起始待写入数据块的编号。
37.如权利要求26所述的装置,其特征在于,还包括:
第一获取判断模块,用于当接收到终端设备发送的写数据指令时从写数据指令中获取待写入数据,并判断待写入数据的长度是否大于扇区的大小,是则触发第一分段作为模块,否则将待写入数据作为当前待写入数据段,触发所述第一接收判断模块;
所述第一分段作为模块,用于根据扇区的大小对待写入数据进行分段,并将第一个数据段作为当前待写入数据段,触发所述第一接收判断模块;
所述第一分块模块,具体用于根据数据块的长度对所述当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
所述第一判断更新模块包括:
第三判断单元,用于判断当前待写入数据段是否均写入完成,是则触发第四判断单元;否则触发第三运算更新单元;
所述第三运算更新单元,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,触发所述第一生成模块;
所述第四判断单元,用于判断待写入数据是否全部写入成功,是则写入完成,否则触发第四运算更新单元;
所述第四运算更新单元,用于将下一个数据段作为当前待写入数据段,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第一分块模块。
38.如权利要求26所述的装置,其特征在于,还包括:
第一判断分区模块,用于当接收到终端设备发送的写数据指令时,从所述写数据指令中获取待写入数据,并判断所述待写入数据的长度是否大于分区的大小,是则根据所述分区的大小对所述待写入数据进行分区,并将第一个分区数据作为当前分区数据,触发第一作为判断模块,否则将所述待写入数据作为当前分区数据,触发第一作为判断模块;
所述第一作为判断模块,用于将所述写数据指令中的扇区地址所在分区作为当前分区,将所述写数据指令中的扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则触发第二作为模块,否则触发第一计算作为模块;
所述第二作为模块,用于将保存的第二密钥作为当前分区的第二密钥,触发第三加密更新模块;
所述第一计算作为模块,用于根据所述写数据指令中的扇区地址计算当前分区编号,对当前分区编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,触发第三加密更新模块;
所述第三加密更新模块,用于根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第四判断模块,用于判断当前扇区是否为当前分区的起始扇区,是则触发第二分段作为模块,否则触发第三运算更新模块;
所述第三运算更新模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第五判断模块,用于判断更新当前中间数据的次数是否与扇区地址匹配,是则触发第二分段作为模块,否则触发所述第三运算更新模块;
所述第二分段作为模块,用于根据扇区的大小对当前分区数据进行分段,并将第一个数据段作为当前待写入数据段,触发所述第一分块模块;
所述第一分块模块,具体用于根据扇区的大小对当前待写入数据段进行分块,并将第一个数据块作为当前待写入数据块;
所述第一判断更新模块包括:
第五判断单元,用于判断当前待写入数据段中的数据块是否均写入完成,是则触发第一判断作为单元;否则触发第五运算更新单元;
所述第五运算更新单元,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前待写入数据段的下一个数据块作为当前待写入数据块,触发所述第一生成模块;
所述第一判断作为单元,用于判断当前扇区是否写满,是则将相邻空闲扇区作为当前扇区,将当前分区数据中的下一个数据段作为当前待写入数据段,触发所述第一分块模块,否则触发第二判断作为单元;
所述第二判断作为单元,用于判断待当前分区数据中的数据段是否全部写入完成,是则触发第六判断单元,否则将当前分区数据中的下一个数据段作为当前待写入数据段,触发所述第一分块模块;
所述第六判断单元,用于判断所述待写入数据是否全部写入完成,是则写入数据完成,否则触发第一作为计算更新单元;
所述第一作为计算更新单元,用于将下一个分区数据作为当前分区数据,更新当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第二分段作为模块。
39.如权利要求38所述的装置,其特征在于,所述第一计算作为模块根据所述写数据指令中的扇区地址计算当前分区的编号,具体为:所述第一计算作为模块用所述写数据指令中的扇区地址除以分区的大小得到商值,并将商值加1的结果作为当前分区的编号。
40.如权利要求38所述的装置,其特征在于,所述第四判断模块具体用于判断扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,触发第二分段作为模块,否则当前扇区不为当前分区的起始扇区,触发第三运算更新模块。
41.如权利要求38所述的装置,其特征在于,所述第五判断模块具体用于将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算得到取余结果,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与所述乘积运算结果一致,是则匹配,触发第二分段作为模块,否则不匹配,触发所述第三运算更新模块。
42.如权利要求38所述的装置,其特征在于,还包括:
第二判断分区模块,用于当接收到终端设备发送的读数据指令时,将读数据指令中的扇区地址所在分区作为当前分区,将所述读数据指令中的扇区地址对应的扇区作为当前扇区,判断当前分区是否为起始分区,是则将保存的第二密钥作为当前分区的第二密钥,触发第四加密更新模块,否则触发第二计算作为模块;
所述第二计算作为模块,用于根据所述读数据指令中的扇区地址计算当前分区编号,对当前分区的编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,触发第四加密更新模块;
所述第四加密更新模块,用于根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第六判断模块,用于判断当前扇区是否为当前分区的起始扇区,是则触发第三作为模块,否则触发第二作为模块;
所述第二作为模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据;
第七判断模块,用于判断更新当前中间数据的次数是否与扇区地址匹配,是则触发第三作为模块,否则触发所述第二作为模块;
所述第三作为模块,用于将当前扇区中的起始数据块作为当前待读取数据块,触发第三生成模块;
所述第三生成模块,用于根据保存的第一密钥、当前待读取数据块与当前中间数据生成最终数据块并进行读取;
第八判断模块,用于判断是否读取到当前扇区的所有数据块,是则触发第九判断模块,否则触发第三计算作为模块;
所述第三计算作为模块,用于对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,将当前扇区中的下一个数据块作为当前待读取数据块,触发所述第三生成模块;
所述第九判断模块,用于根据所述读数据指令中的待读取数据的长度判断是否读取到所有数据块,是则读取数据完成,否则触发第十判断模块;
所述第十判断模块,用于判断是否读取完当前分区的扇区,是则触发第二作为计算更新模块,否则触发第四计算作为模块;
所述第二作为计算更新模块,用于将下一个分区作为当前分区,将当前分区的起始扇区作为当前扇区,更新当前分区编号,对当前分区编号进行取反运算,将保存的第二密钥与当前分区编号的取反结果进行异或运算得到的结果作为当前分区的第二密钥,根据预设算法使用当前分区的第二密钥对保存的参数值进行加密并将加密结果作为当前分区的当前中间数据,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第三作为模块;
所述第四计算作为模块,用于将当前分区中的下一个扇区作为当前扇区,对当前中间数据进行有限域乘法运算并用运算结果更新当前中间数据,触发所述第三作为模块。
43.如权利要求42所述的装置,其特征在于,所述第二计算作为模块根据所述读数据指令中的扇区地址计算当前分区的编号,具体为:所述第二计算作为模块用所述读数据指令中的扇区地址除以分区的大小得到商值,并将商值加1的结果作为当前分区的编号。
44.如权利要求42所述的装置,其特征在于,所述第六判断模块具体用于判断所述读数据指令中的扇区地址与分区的大小进行取余运算,并判断取余结果是否为1,是则当前扇区为当前分区的起始扇区,触发第三作为模块,否则当前扇区不为当前分区的起始扇区,触发第二作为模块。
45.如权利要求42所述的装置,其特征在于,所述第七判断模块具体用于将扇区地址转换为十进制数得到转换数据,将转换数据与分区的大小做取余运算,用扇区的大小除以数据块的大小得到扇区计算中间值次数,用取余结果与扇区计算中间值次数进行乘积运算,判断更新当前中间数据的次数是否与乘积运算结果一致,是则匹配,触发第三作为模块,否则不匹配,触发所述第二作为模块。
46.如权利要求26或32或35或37或38或42所述的装置,其特征在于,还包括:
第二判断模块,用于判断是否保存有第一密钥、第二密钥和参数值;
生成保存模块,用于当所述第二判断模块判断为否时根据保存的密码哈希值生成第一密钥、第二密钥和参数值并保存。
47.如权利要求46所述的装置,其特征在于,所述生成保存模块具体用于将所述密码哈希值分割为等长的两部分,一部分作为第一密钥,另一部分作为第二密钥,将所述第一密钥与所述第二密钥做按位异或运算得到参数值,保存所述第一密钥、所述第二密钥和所述参数值。
CN202011490259.0A 2020-12-17 2020-12-17 一种数据加密存储的实现方法及装置 Active CN112231743B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011490259.0A CN112231743B (zh) 2020-12-17 2020-12-17 一种数据加密存储的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011490259.0A CN112231743B (zh) 2020-12-17 2020-12-17 一种数据加密存储的实现方法及装置

Publications (2)

Publication Number Publication Date
CN112231743A CN112231743A (zh) 2021-01-15
CN112231743B true CN112231743B (zh) 2021-03-16

Family

ID=74124135

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011490259.0A Active CN112231743B (zh) 2020-12-17 2020-12-17 一种数据加密存储的实现方法及装置

Country Status (1)

Country Link
CN (1) CN112231743B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114050900B (zh) * 2022-01-13 2022-04-19 深圳市成为信息技术有限公司 一种车载终端的通信方法、车载终端、摄像终端

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100561449C (zh) * 2005-09-23 2009-11-18 中国科学院计算技术研究所 一种硬盘扇区级数据加密解密方法及系统
CN106681941A (zh) * 2015-11-07 2017-05-17 上海复旦微电子集团股份有限公司 存储器的数据写入、读出方法及装置
JP2019195116A (ja) * 2018-05-01 2019-11-07 ルネサスエレクトロニクス株式会社 データ転送システム及び転送方法
JP6683332B1 (ja) * 2019-08-26 2020-04-15 シスナ株式会社 有価物管理システム
CN111222148A (zh) * 2019-12-26 2020-06-02 河南芯盾网安科技发展有限公司 密钥生成方法、加密方法、解密方法及装置
CN111565206B (zh) * 2020-07-16 2020-10-16 飞天诚信科技股份有限公司 一种安全传输密钥的方法及终端

Also Published As

Publication number Publication date
CN112231743A (zh) 2021-01-15

Similar Documents

Publication Publication Date Title
CN111628868B (zh) 数字签名生成方法、装置、计算机设备和存储介质
WO2021013245A1 (zh) 一种数据密钥保护方法、系统及电子设备和存储介质
KR101095239B1 (ko) 보안 통신
CN107395368B (zh) 无介质环境中的数字签名方法及解封装方法与解密方法
JP4820821B2 (ja) セキュリティ強化のための転置データ変換
CN106878013B (zh) 一种文件的加密、解密方法和装置
CN108390759A (zh) 代码加密、解密方法、装置、计算机设备和存储介质
CN111314050B (zh) 一种加解密方法及装置
US20140317407A1 (en) Incremental mac tag generation device, method, and program, and message authentication device
CN111865579B (zh) 基于sm2算法改造的数据加解密方法及装置
CN112241527B (zh) 物联网终端设备的密钥生成方法、系统及电子设备
CN108199847A (zh) 数字安全处理方法、计算机设备及存储介质
CN111625791A (zh) 一种基于软件密码模块的密钥管理方法及系统
CN110855667A (zh) 一种区块链加密方法、装置及系统
CN113569223A (zh) 一种离线设备的安全认证方法
CN110719160A (zh) 一种基于量子随机数和国密算法的数据库加密方法
JP5451445B2 (ja) 認証システム及び認証方法
CN112231743B (zh) 一种数据加密存储的实现方法及装置
CN108615155B (zh) 一种鉴别交易信息完整性的方法
CN114745114B (zh) 基于口令派生的密钥协商方法、装置、设备及介质
CN115766244A (zh) 车联网信息加密方法、装置、计算机设备和存储介质
WO2023070831A1 (zh) 一种区块确认方法及装置
CN111314051B (zh) 一种加解密方法和装置
CN112580061B (zh) 一种量子加解密应用接口的调用方法及相关设备
CN113326530A (zh) 一种适用于通信双方秘钥共享的秘钥协商方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20231007

Address after: 100085 room 205, B / F, Huizhi building, 9 Xueqing Road, Haidian District, Beijing

Patentee after: Beijing Jianshi Chengxin Technologies Co.,Ltd.

Address before: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085

Patentee before: Feitian Technologies Co.,Ltd.

TR01 Transfer of patent right