【Zig】Zig 中 Hash 的使用,如 Md5、Sha1
2022/8/11 6:26:51
本文主要是介绍【Zig】Zig 中 Hash 的使用,如 Md5、Sha1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Zig 中做Md5 和 Sha1 之类的Hash 非常简单的,现在支持Hash 算法有,blanke2
、Blanke3
、Gimli
、Md5
、Sha1
、sha2
、sha3
,还有一个 组合 composition
。
Md5
pub fn md5() void { const Md5 = std.crypto.hash.Md5; var out: [Md5.digest_length]u8 = undefined; const input = "1234567890"; Md5.hash(input, &out, .{}); std.debug.print("\"{s}\" md5 code is {s}\n", .{ input, std.fmt.fmtSliceHexLower(out[0..]) }); }
"1234567890" md5 code is e807f1fcf82d132f9bb018ca6738a19f
Sha1
pub fn sha1() void { const Sha1 = std.crypto.hash.Sha1; var out: [Sha1.digest_length]u8 = undefined; const input = "1234567890"; Sha1.hash(input, &out, .{}); std.debug.print("\"{s}\" sha1 code is {s}\n", .{ input, std.fmt.fmtSliceHexLower(out[0..]) }); }
"1234567890" sha1 code is 01b307acba4f54f55aafc33bb06bbbf6ca803e9a
Composition
组合可以把两相同 api 的 hash 进行组合计算,默认提供了 Sha256oSha256、Sha384oSha384、Sha512oSha512。
我们可以试试来组合 Md5 和 Sha1,
pub fn composition() void { const Md5oSha1 = std.crypto.hash.composition.Composition(std.crypto.hash.Md5, std.crypto.hash.Sha1); var out: [Md5oSha1.digest_length]u8 = undefined; const input = "1234567890"; Md5oSha1.hash(input, &out, .{}); std.debug.print("\"{s}\" Md5oSha1 code is {s}\n", .{ input, std.fmt.fmtSliceHexLower(out[0..]) }); }
"1234567890" Md5oSha1 code is 1e0a1082ef56d0586330c3c46c5d46d1
这个组件的操作会先计算 Sha1 ,得到的结果再进行 Md5 计算。就相当于下面的代码:
pub fn md5OSha1() void { const Md5 = std.crypto.hash.Md5; const Sha1 = std.crypto.hash.Sha1; const input = "1234567890"; var out: [Sha1.digest_length]u8 = undefined; var dest: [Md5.digest_length]u8 = undefined; Sha1.hash(input, &out, .{}); Md5.hash(&out, &dest, .{}); std.debug.print("\"{s}\" same Md5oSha1 code is {s}\n", .{ input, std.fmt.fmtSliceHexLower(dest[0..]) }); }
这篇关于【Zig】Zig 中 Hash 的使用,如 Md5、Sha1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?