【发布时间】:2010-12-14 23:41:43
【问题描述】:
我想执行 sha1sum file1 和 sha1sum file2 并使用 bash 对它们执行按位或运算。输出应该是可打印的,即 53a23bc2e24d039 ...(160 位)
我该怎么做?
我知道
echo $(( 0xa | 0xb )) 但是如何扩展到40位十六进制数字?
谢谢
【问题讨论】:
-
你为什么要这样做?如果我们知道您更高级别的目标,您可以获得更好的替代解决方案。按位或散列输出闻起来像你可能并不真正想要的东西。
-
基本上,使用可信平台模块,PCR 寄存器通过操作 SHA-1(旧的 PCR 值 | inDigest)进行扩展。 PCR值和inDigest都是160位哈希输出
-
.. 我想在软件中模拟这种行为
-
@idazuwaika:你读错了规格。
PCR := SHA1(PCR || data)读取“将 PCR 的旧值与数据连接,对连接的字符串进行哈希处理并将哈希存储在 PCR 中”。不是PCR := PCR BITWISE-OR SHA1(data)也不是PCR := SHA1(PCR BITWISE-OR data)。 -
我正在使用 Mario Strasser 的 TPM 模拟器,在他的代码中
tpm_integrity.c如下。 TPM_RESULT TPM_Extend(TPM_PCRINDEX pcrNum, TPM_DIGEST inDigest, TPM_PCRVALUE *outDigest) { ... / 计算新的 PCR 值作为 SHA-1(旧的 PCR 值 || inDigest) / tpm_sha1_init(&ctx); tpm_sha1_update(&ctx, PCR_VALUE[pcrNum].digest, sizeof(PCR_VALUE[pcrNum].digest)); tpm_sha1_update(&ctx, inDigest->digest, sizeof(inDigest->digest)); tpm_sha1_final(&ctx, PCR_VALUE[pcrNum].digest); / 设置输出摘要 */ .. } return TPM_SUCCESS; } 它是否遵循规范?