Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SHA1 का उपयोग करके Sql Server 2008 पर पासवर्ड एन्क्रिप्ट करें

C# में हैश और सॉल्ट पासवर्ड

https://crackstation.net/hashing-security.htm

https://www.bentasker.co.uk/blog/security/201-why-you- should-be-asking-how-your-passwords-are-stored

जैसा कि मैंने अपनी टिप्पणियों में कहा है, हैशिंग पासवर्ड कुछ ऐसा है जो आपको शायद स्वयं नहीं करना चाहिए।

ध्यान देने योग्य कुछ बातें:

  • पासवर्ड के लिए SHA1 अनुशंसित नहीं है
  • पासवर्ड नमकीन होने चाहिए
  • अपना खुद का बनाने की कोशिश करने के बजाय आपको एक सत्यापित यूजरस्टोर फ्रेमवर्क का उपयोग करना चाहिए, क्योंकि आप संभवतः "इसे गलत करेंगे"
  • मुझे यकीन है कि और भी बहुत कुछ हैं

ऐसा कहा जा रहा है , अपने विशिष्ट प्रश्न को पूरा करने के लिए, आप कुछ इस तरह चाहेंगे:

Users
----
userId
passwordHashed

पासवर्डहैशेड उपयोगकर्ता के पासवर्ड का हैशेड संस्करण संग्रहीत करता है (सादा पाठ पासवर्ड कभी भी दृढ़ता में कहीं भी संग्रहीत नहीं होता है।)

वैध पासवर्ड की जाँच के लिए कुछ इस तरह किया जाता है:

ALTER procedure [dbo].[proc_UserLogin]
 @userid varchar(20),
  @password nvarchar(50)
  As 

  declare
  @ReturnVal              varchar(500)


SET NOCOUNT ON      

  if exists(select userid,password from LoginManager where [email protected] and password=HASHBYTES('SHA1', @password))
  set @ReturnVal='0|Logged in Successfully'
  else
  set @ReturnVal='1|Login Failed/Username does not exist'

  select @ReturnVal

उपयोगकर्ता पासवर्ड डालने/अपडेट करने के लिए, आपको यह सुनिश्चित करने की ज़रूरत है कि हैशेड पासवर्ड को प्लेन टेक्स्ट पासवर्ड के बजाय स्टोर किया जाए;

INSERT INTO users(userId, passwordHashed) 
VALUES (@userId, HASHBYTES('SHA1', @rawPassword)

या

UPDATE users 
SET passwordHased = HASHBYTES('SHA1', @rawPassword) 
WHERE userId = @userId

संपादित करें:

बस एहसास हुआ कि आप पूछ रहे हैं कि सी # में हैश को कैसे पूरा किया जाए, एसक्यूएल नहीं। आप निम्न कार्य कर सकते हैं (हैशिंग विद SHA1 सी# . में एल्गोरिदम ):

public string Hash(byte [] temp)
{
    using (SHA1Managed sha1 = new SHA1Managed())
    {
        var hash = sha1.ComputeHash(temp);
        return Convert.ToBase64String(hash);
    }
}

आपका कोड स्निपेट हो सकता है:

            conn.Open();
            string query = "EXEC dbo.proc_UserLogin'" + username.Text+ "', '" + this.Hash(System.Text.Encoding.UTF8.GetBytes(password.Text))+"'";
            OleDbCommand cmd = new OleDbCommand(query, conn);

आपको यह भी ध्यान रखना चाहिए कि आपको अपने पैरामीटर को अपनी संग्रहीत कार्यविधि में पैरामीटराइज़ करना चाहिए बजाय इसके कि आप उन्हें वैसे ही पास करें - जो ऐसा लगता है कि इसके संबंध में आपके पास पहले से ही एक अलग प्रश्न है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में सभी डेटाबेस फ़ाइलों के बारे में जानकारी सूचीबद्ध करना

  2. एक्सएमएल नाम आउटपुट कॉलम के लिए एसक्यूएल यूनियन

  3. एसएसआईएस 2008 - चर में वर्तमान तिथि प्राप्त करें

  4. SQL सर्वर के साथ एकल तालिका में शामिल होकर मैं सारांश कैसे बना सकता हूँ?

  5. sql सर्वर में वर्तमान डेटाटाइम से पिछले 7 दिनों तक पिछले 7 दिनों का डेटा कैसे प्राप्त करें?