我是Crystal的新手。我想嘗試找到一個十六進制字符串的哈希值SHA256。我已經成功地得到一些工作:Crystal:如何查找二進制值的SHA256哈希值?
sha256 = OpenSSL::Digest.new("sha256")
puts sha256.update("abcd")
但我不知道如何把「ABCD」的二進制值中的散列函數,或得到二進制出來。我基本上想能夠重新創建這個Ruby功能:
def hash256(hex)
# 1. Convert hex string to array, and pack in to binary
binary = [hex].pack("H*")
# 2. Hash the binary value (returns binary)
hash1 = Digest::SHA256.digest(binary)
# 3. Hash it again (returns binary)
hash2 = Digest::SHA256.digest(hash1)
# 4. Convert back to hex (must unpack as array)
result = hash2.unpack("H*")[0]
return result
end
是否有可能在Crystal中使用SHA256的二進制值?
非常感謝。兩次使用SHA256的原因是因爲我試圖通過編寫一個比特幣庫來學習Crystal,而沒有真正的理由,事情往往會被哈希兩次。 – inersha