• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

如何使用加密芯片完成SHA1摘要运算

1. 测试目标

使用LKT系列加密芯片进行SHA1摘要运算并使用openssl验证正确性

2. 测试环境

本示例LKT加密芯片运行环境为windows系统、测试软件LCS KIT、LKT-K100开发板。Linux ubuntu 14.04系统、OpenSSL 1.0.1f 6 Jan 2014。

3. 测试步骤

 

注意:“->”表示使用LCS KIT软件操作LKT-K100向加密芯片发送数据

 “<-”表示使用LCS KIT软件操作LKT-K100读回加密芯片输出的数据

加密芯片交互数据为16进制ASCII码

 

3.1确认待加密数据

本例使用的明文摘要数据为0x313132323333343435353636,对应的字符串为“1122334455667788”

 

3.2使用LCS KIT软件操作LKT-K100连接加密芯片后,进行复位操作,此步骤省略

 

3.3执行摘要操作

-> 80C200000C313132323333343435353636

<- 6114

 

-> 00C0 0000 14

<- 24C1F4B4103E7017ECCFE8BAF33202F27FA4C197 9000

其中红字部分为使用SHA1算法对0x313132323333343435353636进行摘要后获得的结果。

返回数据中的C1表示加密后的结果,其长度为0x80字节,9000是加密成功的状态码

 

3.4使用openssl算法库验证正确性

运行linux系统,安装openssl

在终端中输入安装openssl安装指令

$ sudo apt-get install openssl

 

3.5创建测试目录sha1test,并进入该路径,创建SHA1-text.txt文件,并写入数据,注意此处是字符串。

$ mkdir sha1test

$ cd sha1test

$ mkdir SHA1-text.txt

$ geidt SHA1-txt.txt

输入“112233445566”后保存退出,如图1所示。

图1

 

3.6登录openssl

$ openssl

 

3.7  OpenSSL>  dgst -sha1 SHA1-test.txt

图2

此时输出摘要结果如图2所示24c1f4b4103e7017eccfe8baf33202f27fa4c197。与3. 3步骤中加密芯片摘要结果比对一致,证明加密芯片进行SHA1摘要结果正确。

 

至此,使用LKT加密芯片进行SHA1摘要运算,并通过openssl命令行计算验证的测试流程已全部介绍完。

全部回复(20)
正序查看
倒序查看
2019-04-25 17:10
LZ的一系列文章都看过了,讲的很好,学习了。
0
回复
小帆儿
LV.5
3
2019-04-25 17:18
@小屁孩456
LZ的一系列文章都看过了,讲的很好,学习了。
楼主所说的这些测试步骤都是在windows系统下完成的,那在其他系统下是否可以实现呢?
0
回复
宇宙王
LV.3
4
2019-04-25 17:25
@小帆儿
楼主所说的这些测试步骤都是在windows系统下完成的,那在其他系统下是否可以实现呢?
当然是不局限于windows系统的,在linux下同样可行
0
回复
Mr_Wang_
LV.4
5
2019-04-25 17:33
@宇宙王
当然是不局限于windows系统的,在linux下同样可行
单纯使用SHA算法保护产品的话,安全性高吗?
0
回复
Hex315
LV.5
6
2019-04-25 19:50
@Mr_Wang_
单纯使用SHA算法保护产品的话,安全性高吗?
SHA算法只是作为数据摘要,主要用于确保数据完整性,安全性都是相对的,只要方案做的好,安全性也是有保障的
0
回复
2019-04-26 08:39
@Hex315
SHA算法只是作为数据摘要,主要用于确保数据完整性,安全性都是相对的,只要方案做的好,安全性也是有保障的
又get到新技能了,LKT系列的加密芯片功能很强大,感谢楼主的分享
0
回复
邓女士
LV.5
8
2019-04-26 09:09
@人称福爷
又get到新技能了,LKT系列的加密芯片功能很强大,感谢楼主的分享
请问楼主在相同的测试坏境下,其测试目标更换为市面上的普通加密芯片是否能正常完成SHA1摘要运算?
0
回复
BLoun
LV.5
9
2019-04-26 14:24
@邓女士
请问楼主在相同的测试坏境下,其测试目标更换为市面上的普通加密芯片是否能正常完成SHA1摘要运算?
市面上的其他芯片用相同的指令,是不一定能操作实现SHA1运算的。每个厂家的COS定义的指令如果不是特定要求或不是PBOC这类必须按行业规范指令操作的。指令格式是允许存在一些差异的。
0
回复
114W1
LV.5
10
2019-04-26 15:04
@BLoun
市面上的其他芯片用相同的指令,是不一定能操作实现SHA1运算的。每个厂家的COS定义的指令如果不是特定要求或不是PBOC这类必须按行业规范指令操作的。指令格式是允许存在一些差异的。
SHA1加密算法貌似是公认的最安全的散列算法之一,那么LKT系列加密芯片用上这么安全的算法,简直是完美啊!!
0
回复
2019-04-26 15:12
@114W1
SHA1加密算法貌似是公认的最安全的散列算法之一,那么LKT系列加密芯片用上这么安全的算法,简直是完美啊!!
摘要算法和安全没啥关系啊
0
回复
114W1
LV.5
12
2019-04-26 15:25
@miniminimini
摘要算法和安全没啥关系啊
那和什么有关系呢?
0
回复
2019-04-26 15:30
@114W1
那和什么有关系呢?
要理解Sha1是什么,是摘要算法,也叫单向算法不是平时理解的加解密,所以和安全没啥关系
0
回复
2019-04-26 15:42
@miniminimini
要理解Sha1是什么,是摘要算法,也叫单向算法不是平时理解的加解密,所以和安全没啥关系
数据加密我知道,但是这个SHA1算法,好像并不能还原数据,在数据传输中有什么作用啊?SHA256也是这么操作吗?
0
回复
宇宙王
LV.3
15
2019-04-27 10:57
@小屁孩456
数据加密我知道,但是这个SHA1算法,好像并不能还原数据,在数据传输中有什么作用啊?SHA256也是这么操作吗?
SHA1算法的作用是验证数据的完整性,应该是一样的操作
0
回复
Mr_Wang_
LV.4
16
2019-04-27 19:56
@宇宙王
SHA1算法的作用是验证数据的完整性,应该是一样的操作
加密成功的状态码是解密的唯一路径吗?
0
回复
Hex315
LV.5
17
2019-04-27 21:01
@Mr_Wang_
加密成功的状态码是解密的唯一路径吗?
加密成功返回的状态码只是代表指令执行成功了,如果解密的话,还得从分析线路数据或者破解单片机端破解
0
回复
小帆儿
LV.5
18
2019-04-28 16:43
@Hex315
加密成功返回的状态码只是代表指令执行成功了,如果解密的话,还得从分析线路数据或者破解单片机端破解
要是能给个openssl的库函数调用例程就好了
0
回复
2019-04-28 17:21
@小帆儿
要是能给个openssl的库函数调用例程就好了
确实很专业,弥补了很多知识点空缺
0
回复
邓女士
LV.5
20
2019-04-28 17:28
@人称福爷
确实很专业,弥补了很多知识点空缺
太专业了,我听说还有SHA256,哪个更安全呢?
0
回复
BLoun
LV.5
21
2019-04-28 22:01
@邓女士
太专业了,我听说还有SHA256,哪个更安全呢?
两个都是用来做数据完整性验证的,与安全没关系
0
回复