LiteOS组件尝鲜-玩转RHash

举报
Lionlace 发表于 2021/12/24 14:54:18 2021/12/24
【摘要】 基本介绍RHash是一个C语言编写的哈希函数库,用于计算和验证磁力链接和各种消息摘要的控制台实用程序。程序特点:递归处理目录的能力;以预定义的(SFV、类 BSD)或用户定义的格式输出;计算磁链;更新哈希文件(添加哈希文件中缺少的文件的消息摘要);一次计算多个消息摘要;可移植性:该程序在 Linux、Unix、macOS 或 Windows 上的工作方式相同。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.alibrhash_demo.a文件,系统镜像文件为Huawei_LiteOS.bin

Cloud_STM32F429IGTx_FIRE开发板为例来运行RHash Demo,其他开发板操作请参考快速入门

LiteOS启动后会运行RHash Demo,本demo演示了MD5SHA256两种哈希函数的使用方法。通过计算给定数据的md5sha256哈希值,原本数据的哈希值进行比较。给定数据为:

#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-

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。