2010-04-26 15 views
6

मैं अपना पासवर्ड एन्क्रिप्ट करने और डेटाबेस में सहेजने के लिए require 'digest/sha1' का उपयोग कर रहा हूं। लॉगिन के दौरान मैं डेटाबेस में सहेजे गए एन्क्रिप्टेड पासवर्ड से मिलान करके प्रमाणित करता हूं और फिर पासवर्ड क्षेत्र में एक प्रयोग दर्ज एन्क्रिप्ट करता हूं। अभी तक सब ठीक काम करता है लेकिन अब मैं 'पासवर्ड भूल गए' कार्यक्षमता करना चाहता हूं। ऐसा करने के लिए मुझे मूल पासवर्ड खोजने के लिए डेटाबेस में सहेजे गए पासवर्ड को डिक्रिप्ट करने की आवश्यकता है। digest/sha1 का उपयोग करके डिक्रिप्ट कैसे करें? या क्या कोई भी एल्गोरिदम जानता है जो एन्क्रिप्शन & डिक्रिप्शन का भी समर्थन करता है?रेल में एन्क्रिप्शन-डिक्रिप्शन

मैं रेल पर रूबी का उपयोग कर रहा हूं इसलिए मुझे इसे पूरा करने के लिए रूबी तरीके की आवश्यकता है।

+0

एक बेहतर विकल्प वसूली की अनुमति नहीं होगी .. तो उपयोगकर्ता भूल गया, तो उपयोगकर्ता कोई नया स्थान चुनें है। यह सबसे सुरक्षित तरीका है, और सबसे सस्ता है। – baash05

उत्तर

10

पर एक संक्षिप्त उत्तर पर गिनती नहीं है SHA1 लिए वन-वे समारोह आप इसे नहीं पलट सकता है।

यह पासवर्ड फिर सेट करता है फिर से रुचि का हो सकता: http://www.binarylogic.com/2008/11/16/tutorial-reset-passwords-with-authlogic/

आप एन्क्रिप्शन/डिक्रिप्शन करने के लिए तो आप AES की तरह कुछ का उपयोग करना चाहिए चाहते हैं। एक बार जब आप एन्क्रिप्शन/डिक्रिप्शन का उपयोग करना शुरू कर देते हैं, तो आपको भी कुंजी प्रबंधन के बारे में चिंता करना शुरू करना होगा।

नीचे दिए गए ओपी को आपकी टिप्पणी के संबंध में - यदि आप सीसी जानकारी संग्रहीत करने जा रहे हैं, तो मैं आपको सलाह दूंगा कि क्रिप्टो, कुंजी प्रबंधन इत्यादि के बारे में कौन जानता है और प्रासंगिक कानूनी और नियामक पहलुओं को भी समझता है । ezcrypto मणि पर

+0

के लिंक के साथ अपना (ऐसा नहीं) उत्तर संपादित किया है ठीक है तो मैं किसी भी 2 वे एल्गोरिदम को जानना चाहता हूं जिसे मैं डिक्रिप्ट करने में सक्षम होना चाहिए। कृपया "होरेस हो" – Salil

6

पासवर्ड एन्क्रिप्ट नहीं करें। इसके बजाय, पासवर्ड के हैश को संग्रहीत किया गया (नमक के साथ बेहतर)।

से भूलें पासवर्ड आमतौर पर पासवर्ड रीसेट की एक ईमेल अधिसूचना, किसी अन्य चैनल के माध्यम से प्रमाणीकरण का मतलब है (पुनः) प्रमाणीकरण।

देखें http://railscasts.com/episodes/209-introducing-devise यदि आपको पहले से ही कुछ पूर्व-निर्मित की आवश्यकता है।

संपादित करें: यदि आप वास्तव में एन्क्रिप्शन की जरूरत है, गूगल "openssl माणिक"

वहाँ सुरक्षित काम के लिए एक सरल उपाय नहीं है। कमजोरी लिंक द्वारा आपका कार्यान्वयन कितना अच्छा है।

हां, तो मेरी सिफारिश है, अतः ;-)

+0

मुझे इसकी आवश्यकता है क्योंकि भविष्य में मैं पूर्व के लिए कुछ गोपनीय डेटा सहेजना चाहता हूं: - क्रेडिट कार्ड नंबर। तो मुझे डिक्रिप्शन की भी आवश्यकता है। – Salil

+0

मैंने "openssl" – ohho

1

देखो: http://ezcrypto.rubyforge.org/

वहाँ भी तहखाने मणि, ब्लोफिश को देखो है: http://crypt.rubyforge.org

+0

द्वारा दिए गए उत्तर के ठीक नीचे मेरी पिछली टिप्पणी देखें, ऐसा लगता है कि आप जिन परियोजनाओं से लिंक करते हैं, उन्हें 2006 से अपडेट नहीं किया गया है। – Peder

2

के रूप में होरेस हो बताया गया है, यदि आप एक पासवर्ड एन्क्रिप्ट कभी नहीं करना चाहिए लेकिन हमेशा एक crypted नमक की दुकान।

हालांकि, गोपनीय जानकारी जैसे अन्य प्रकार के डेटा को क्रिप्ट करना बिल्कुल ठीक है। Encryptor यह ओपनएसएसएल के लिए एक सरल लेकिन शक्तिशाली रैपर है। यह किसी भी वर्ग में विशेषताओं को एन्क्रिप्ट/डिक्रिप्ट करने की क्षमता प्रदान करता है।

+0

इसका उपयोग करते समय मुझे समस्या है जब मैं एन्क्रिप्टेड डेटा को डेटाबेस में सहेजता हूं – Salil

+0

किस तरह की समस्या? –

1

अन्य डेटाबेस फ़ील्ड चेकआउट attr_enrypted मणि

https://github.com/shuber/attr_encrypted

लेकिन के रूप में दूसरों का उल्लेख आप एक पासवर्ड पर ऐसा नहीं करना चाहते पर दो तरह एन्क्रिप्शन ऐसा करने के लिए।पासवर्ड एक तरह से संग्रहीत किया जाना चाहिए। भूल गए पासवर्ड कार्यक्षमता के लिए आप आमतौर पर उन्हें असंभव-अनुमान लगाने वाले यूआरएल ईमेल करते हैं जो उन्हें एक नया पासवर्ड चुनने देगा।

यहाँ एक उदाहरण है: http://railscasts.com/episodes/274-remember-me-reset-password?view=asciicast

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