2011-03-28 56 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