LiteOS组件尝鲜-玩转RHash
基本介绍
RHash是一个C语言编写的哈希函数库,用于计算和验证磁力链接和各种消息摘要的控制台实用程序。
程序特点:
- 递归处理目录的能力;
- 以预定义的(SFV、类 BSD)或用户定义的格式输出;
- 计算磁链;
- 更新哈希文件(添加哈希文件中缺少的文件的消息摘要);
- 一次计算多个消息摘要;
- 可移植性:该程序在 Linux、Unix、macOS 或 Windows 上的工作方式相同。
Rhash支持的哈希函数列表:
Name |
Hash Length (bits) |
Format |
Specification |
CRC32 |
32 |
hex |
CRC32-IEEE 802.3 |
CRC32C |
32 |
hex |
RFC 3385 |
MD4 |
128 |
hex |
RFC 1320 |
MD5 |
128 |
hex |
RFC 1321 |
SHA1 |
160 |
hex |
RFC 3174 |
SHA2 |
224/256/384/512 |
hex |
FIPS 180-4: Secure Hash Standard (SHS) |
SHA3 |
224/256/384/512 |
hex |
The Keccak sponge function family |
TIGER |
192 |
hex |
Tiger page |
TTH |
192 |
base32 |
TTH description |
BTIH |
160 |
hex |
BitTorrent Specification |
ED2K |
128 |
hex |
ED2K description |
AICH |
160 |
base |
32AICH description |
WHIRLPOOL |
512 |
hex |
ISO/IEC 10118-3:2004 |
RIPEMD-160 |
160 |
hex |
RIPEMD-160 page |
GOST R 34.11-94 |
256 |
hex |
RFC 5831 |
GOST-CRYPTOPRO |
256 |
hex |
RFC 4357 |
GOST R 34.11-2012 |
256/512 |
hex |
RFC 6986 |
HAS-160 |
160 |
hex |
HAS-160 specification |
SNEFRU |
128/256 |
hex |
Ralph C. Merkle, 1990 |
EDON-R |
256/512 |
hex |
D. Gligoroski, S. Markovski, L. Kocarev, Edon–R, An Infinite Family of Cryptographic Hash Functions, 2006 |
使能RHash Demo
在LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。
继续在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能RHash Demo。
Demos --->
Security Demo --->
[*] Enable RHash Demo
使能RHash Demo后会自动使能RHash组件。
保存退出后,会从github上自动下载RHash源代码,并从gitee上下载适配于LiteOS系统的patch包,并打入patch。关于组件下载的详细流程请参考:https://gitee.com/LiteOS/LiteOS_Components#%E5%9C%A8%E7%BA%BF%E7%BB%84%E4%BB%B6%E4%B8%8B%E8%BD%BD%E6%B5%81%E7%A8%8B
注:下载需要Linux主机可以访问互联网,并安装git。
编译运行RHash Demo
使能RHash Demo后,在LiteOS源码根目录下执行make clean; make -j命令编译LiteOS工程,编译成功后会在out/{platform}/lib路径下生成librhash.a和librhash_demo.a文件,系统镜像文件为Huawei_LiteOS.bin。
以Cloud_STM32F429IGTx_FIRE开发板为例来运行RHash Demo,其他开发板操作请参考快速入门 。
LiteOS启动后会运行RHash Demo,本demo演示了MD5和SHA256两种哈希函数的使用方法。通过计算给定数据的md5和sha256哈希值,原本数据的哈希值进行比较。给定数据为:
#define DEMO_STR "This is Huawei LiteOS RHash Demo.\n"
在linux下新建文件test.txt,复制demoStr的内容到test.txt中,并执行以下命令生成md5和sha256的值:
$ md5sum test.txt
$ sha256sum test.txt
获得的md5和sha256值为:
#define MD5_SUM "7990beea258031735be06254cea58a89"
#define SHA256_SUM "d56910304664d3d3a439968b020bb465d5de33715cfb109d71704b91f85db30c"
在LiteOS环境中,RHash Demo运行结果如下:
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.1.0
build data : Aug 12 2021 10:32:28
**********************************
OsAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
RHash demo start to run.
Original md5:
7990beea258031735be06254cea58a89
RHash calculate md5:
7990beea258031735be06254cea58a89
Original sha256:
d56910304664d3d3a439968b020bb465d5de33715cfb109d71704b91f85db30c
RHash calculate sha256:
d56910304664d3d3a439968b020bb465d5de33715cfb109d71704b91f85db30c
RHash demo finished.
Huawei LiteOS #
通过以上例程可知,使用RHash计算出来的哈希值与linux平台下类似工具的计算结果完全一致。
结语
未来我们还会持续新增更多组件、开发板、架构、特性等。
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:https://gitee.com/LiteOS/LiteOS/issues。
为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如图所示。
-end-
- 点赞
- 收藏
- 关注作者
评论(0)