【发布时间】:2021-05-21 23:27:44
【问题描述】:
我有两个 sha256 哈希作为十六进制字符串
HASH1=b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
HASH2=7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730
现在我想创建一个依赖于这两个哈希的新 SHA256。在任何情况下,相同哈希的任何两个十六进制表示都应该始终导致相同二进制哈希的表示(例如,如果我不使用字符串表示,那么它必须是它的某种规范形式,例如 ascii 编码的小写)
我知道我需要使用单射函数,但最好的方法是什么?
我应该使用字符串值和一些分隔符,然后散列该散列的二进制表示(并依赖 bash 使用 ASCII 编码)吗?
NEW_HASH=$(echo -n "${HASH1,,},${HASH2,,}" | openssl dgst -sha256 | sed 's/(stdin)= //')
或者最好先将字符串表示形式转换为二进制,然后在将结果输入到 openssl 之前对二进制表示形式做一些事情?
【问题讨论】: