2015-12-29 84 views
-1

我試圖使用SHA512加密哈希。但我得到不能將哈希轉換爲字符串。任何幫助表示讚賞。如何使用SHA512加密哈希值

hash=Hash.new 
hash={first_name:"hari", last_name:"prakash", mobile:"12345" } 
enc_hash= Digest::SHA2.new(512).digest(hash) 

當我做到這一點我越來越

TypeError: can't convert Hash into String

請指引我。任何關於這個主題的研究資源都會受到讚賞

+0

SHA512,實際上任何加密哈希函數都是**不**加密。加密意味着可逆性和使用密鑰來實現這一點。此外,對字典使用「散列」這個詞是Perl的一個人造物,現在Ruby只是造成混淆。 – zaph

+0

你的問題很不明確。首先,「加密散列」意味着什麼?所有已知的加密算法都可以在八位字節流,比特流,字節流或字符流上工作。沒有加密算法可用於內存中的Ruby對象圖。其次,SHA512不是一種加密算法,因此您無法使用它加密任何內容。 –

回答

1

由於錯誤狀態,摘要對字符串起作用。如果你想加密它,你可以將其轉換爲字符串第一:

Digest::SHA2.new(512).digest(hash.to_s) 
+0

工作。但有沒有其他方法來加密散列而不將其轉換爲字符串。 – hari

+0

@hari,不知道在沒有對其進行字符串化的情況下,對常規散列進行加密看起來像什麼樣。 – ndn

0

也許你想要這個,哈希值只在散列內?

hash.map { |k,v| hash[k] = Digest::SHA2.new(512).digest(v) }