从 GNAT.SHA1 获取 SHA1 块
我正在使用 GNAT.SHA1
在 Ada
中创建字符串的 SHA1
哈希值。我的代码库很小,因此我希望避免将编译器未提供的任何库导入到项目中,因此我使用 GNAT.SHA1
。据我所知,用于检索哈希值的唯一“公共”方法是通过 Digest 函数以字符串形式。我想获取 160 位块,它是 Context
类型的 H
成员。不幸的是,Context
记录是私有的。我有什么办法可以得到它吗?或者他们是 GNAT 或 Ada 标准库提供的替代方法?
I am using GNAT.SHA1
to create a SHA1
hash of a string in Ada
. My code base is small, so I'd like to avoid importing any libraries to the project that aren't provided by my compiler, hence I'm using GNAT.SHA1
. As far as I'm aware, the only "public" methods for retrieving the hash is in String form via the Digest
function. I would like to instead get the 160-bit block that is the H
member of the Context
type. Unfortunately, the Context
record is private. Is there any way I can get at it? Or is their an alternative method provided by GNAT
or the Ada standard library?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道有什么直接方法可以获取 160 位块,但当然您可以从十六进制字符串计算它。
这是我刚刚拼凑的一个例子。 (当然,通过将
"16#"
和"#"
添加到十六进制子字符串来提取 32 位整数可能不是最优雅的解决方案。输出为:
I don't know of any direct way to get the 160-bit block, but of course you can compute it from the hexadecimal string.
Here's an example I just threw together. (Granted, extracting 32-bit integers by adding
"16#"
and"#"
to the hex substring may not be the most elegant solution.The output is: