2011-03-28 55 views
12

我有以下字段的數據庫:id,q_id,text,session等,我已經有2條記錄在那裏。我想用SHA1 alghoritm散列每一行(每一行當然都是唯一的)。我試過這個:SHA1散列在Rails

@w = Digest::SHA1.hexdigest(id+q_id+text+session) 

但它不起作用。

+8

1)SHA1是哈希,不進行加密。檢查例如維基百科(http://en.wikipedia.org/wiki/Cryptographic_hash_function)以瞭解基本知識。 2)什麼*確切*不起作用? – atzz 2011-03-28 07:58:11

+0

SHA-1已被證明是不安全的。考慮使用更安全的替代品,例如SHA-256或SHA-3。 https://shattered.io/ – 2017-03-23 12:53:50

回答

26

SHA不是加密,而是它創建了一個cryptographic hash。如果這仍然是你想要做的,我的猜測是idq_id是Fixnums,需要轉換爲字符串。

@w = Digest::SHA1.hexdigest(ans.id.to_s + ans.q_id.to_s + ans.text + ans.session) 

我也是那種喜歡用字符串常量,因爲它使得它很明顯,我們正在處理一個字符串

@w = Digest::SHA1.hexdigest("#{id}#{q_id}#{text}#{session}") 
+0

請參閱如何在ruby中創建SHA1哈希?(http://stackoverflow.com/questions/34490/how-do-i-create-a-sha1-hash-in-ruby ) – 2013-08-22 01:34:40