2011-03-28 20 views
12

मेरे पास निम्न फ़ील्ड के साथ डेटाबेस है: id, q_id, text, session आदि और मेरे पास पहले से ही 2 रिकॉर्ड हैं। मैं SHA1 alghoritm के साथ प्रत्येक पंक्ति हैश करना चाहता हूं (प्रत्येक पंक्ति बिल्कुल अनूठी है)। मैंने यह कोशिश की:रेल में SHA1 हैशिंग

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

लेकिन यह काम नहीं करता है।

+8

1) SHA1 एन्क्रिप्शन के लिए नहीं, हैशिंग के लिए है के साथ काम कर रहे हैं की तरह। मूलभूत बातें पढ़ने के लिए, उदाहरण के लिए, विकिपीडिया (http://en.wikipedia.org/wiki/Cryptographic_hash_function) की जांच करें। 2) क्या * बिल्कुल * काम नहीं कर रहा है? – atzz

+0

SHA-1 को असुरक्षित दिखाया गया है। सुरक्षित विकल्पों का उपयोग करने पर विचार करें, जैसे SHA-256, या SHA-3। https://shattered.io/ –

उत्तर

26

SHA एन्क्रिप्शन नहीं है बल्कि यह cryptographic hash बनाता है। यदि वह अभी भी है जो आप करना चाहते हैं, तो मेरा अनुमान है कि id और q_id फ़िक्सनम्स हैं और स्ट्रिंग में कनवर्ट करने की आवश्यकता है।

@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

देखें मैं रूबी में SHA1 हैश कैसे बना सकता हूं? (http://stackoverflow.com/questions/34490/how-do-i-create-a-sha1-hash-in-ruby) –

संबंधित मुद्दे