Ruby:hexencode和hexdigest之间的区别

时间:2018-05-30 08:24:52

标签: ruby sha256 digest

今天我读了关于Rubies hexdigest方法的文档,例如

// cast input pointer:
__m64* input64 = (__m64*)input;
// convert and scale:
__m128 lo_f = _mm_mul_ps(_mm_cvtpi16_ps(input64[0]), _mm_set_ps1(1.f/2048.f));
__m128 hi_f = _mm_mul_ps(_mm_cvtpi16_ps(input64[1]), _mm_set_ps1(1.f/2048.f));

The documentation说:

  

返回给定字符串的十六进制编码哈希值。这几乎等同于Digest::SHA256.hexdigest('123') => "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"

突出显示的是我:这里几乎意味着什么?它有什么不同?

当然我上面的示例字符串会产生相同的结果:

Digest.hexencode(Digest::Class.new(*parameters).digest(string))

有人能指出结果可能不同的情况吗?我想了解是否"几乎"指出一个重要的区别,或者差异是否与我无关。

1 个答案:

答案 0 :(得分:0)

如同Digest::Instance所述的模块hexdigest(string)返回hexencode_str_new(value);一样。在Digest模块中,hexencode(string)也返回hexencode_str_new(value);。因此,如果使用相同的实例类型,则没有区别。 "几乎"因为在文档示例中可以是Digest :: SHA512或其他。