السلام عليكم
انا عندي استفسار عن hashing function
هلا انا قرات عنه ولماذا يستخدم
بس مش قادره اعرف كيف يستخدم
اين يضع الكود ليخزن باسورد مشفره بالداتا بيز واليه العمل
انتظر ردودكم
شكرا مقدما
السلام عليكم
انا عندي استفسار عن hashing function
هلا انا قرات عنه ولماذا يستخدم
بس مش قادره اعرف كيف يستخدم
اين يضع الكود ليخزن باسورد مشفره بالداتا بيز واليه العمل
انتظر ردودكم
شكرا مقدما
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم
الـhashing هو نوع من التشفير الأحادي الجهة. أي أنك تستطيع تحويل كلمة السر (على سبيل المثال) إلى كلمة مشفرة أصغر حجماً، وهذه الجملة المشفرة لا يمكن إعادتها إلى شكلها الأصلي. طريقة استخدامها لكلمات السر هو أنك لا تخزن كلمة السر نفسها في قاعدة البيانات بل تخزن نتيجة الـhashing. وعندما تتم عملية تسجيل الدخول، تقوم بتشفير كلمة السر المدخلة باستخدام نفس دالة الـhashing وتقارن النتيجة بتلك المخزنة لديك. عندما تتساوى القيمتان فهذا يعني أن كلمة السر المدخلة مطابقة لكلمة السر المخزنة وتنجح عملية الدخول.
اها شكرا يا باشا للرد السريع
بس كيف بدي اطبقها برمجيا على الدوت نت
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم
ليكن لديك textbox تكتبين فيه كلمة السر ................
ضعي الكود التالي
string Inc_Pass = FormsAuthentication.HashPasswordForStoringInConfigFile(textbox1.Text, "MD5");
حيث ان النص المشفر هو محتوى textbox1 وخوارزمية التشفير هي MD5
قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:
مثلا تفنى المسـرة ***** هكذا تفنى الهموم
السلام عليكم ورحمه الله وبركاته
كما ذكر الاخ في السابق ال Hashing هو نوع من ثلاثه انواع لخوارزميات التشفير
Symmetric, Asymmetric, Hashing
يستخدم تشفير فقط وليس له فك تشفير فلهذا يسمى التوقيع الالكتروني Digital Signature فيمكنك من التحقق من كلمات المرور او البصمه وووو
Imports System.Security.Cryptography
Imports System.Text
Dim sha1 As New SHA1CryptoServiceProvider()
Dim password() As Byte = sha1.ComputeHash(Encoding.ASCII.GetBytes("My Password"))
ويمكنك استخدام
SHA256CryptoServiceProvider
SHA384CryptoServiceProvider
MD5CryptoServiceProvider
هناك العديد من الخوارزميات التي تستخدم نفس الاسلوب
تم تعديل هذه المشاركة بواسطة VB Helper في 12 فبراير 2011 في 11:25
.:: Wish to become better and better ::.
Tammam_KD كتب:ليكن لديك textbox تكتبين فيه كلمة السر ................
ضعي الكود التالي
string Inc_Pass = FormsAuthentication.HashPasswordForStoringInConfigFile(textbox1.Text, "MD5");حيث ان النص المشفر هو محتوى textbox1 وخوارزمية التشفير هي MD5
ممتاز شكرا كتير معلومه حلوه والحمد لله زبطت :wink:
بس للأسف اللي ما زبط معي هوه تسجيل الدخول
عملت كما قال الاخ VB Helper بس ما زبط معي كود login وارجاع الباسورد
***تحياتي***
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم
اسمعي شو رح تعملي بكل بساطة رح اشرحلك الكود شرح وانتي اكيد رح تعرفي اتطبقي :
كود تسجيل الدخول
string Inc_Pass = FormsAuthentication.HashPasswordForStoringInConfigFile(textbox1.Text, "MD5"); string LoginQuiry ="select UserID from Users where UserName='"+TextBox_Name+"' and Password ='"+Inc_Pass+"' "; // now go and execute the select statment
طبعا النص في قاعدة البيانات يكون مشفر
قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:
مثلا تفنى المسـرة ***** هكذا تفنى الهموم
السلام عليكم ورحمه الله وبركاته
هذا هو كود تسجيل الدخول
Imports System.Security.Cryptography
Imports System.Text
Dim sha1 As New SHA1CryptoServiceProvider()
Dim password() As Byte = sha1.ComputeHash(Encoding.ASCII.GetBytes(txtPassword.Text))
Dim conn As New SqlConnection("Your ConnectionString")
Dim cmd As New SqlCommand("Select Count(*) From Users Where Username=@Username and Password=@Password",conn)
cmd.Parameters.AddWithValue("Username",txtUsername.txt)
cmd.Parameters.AddWithValue("Password",password)
conn.Open()
If cmd.ExecuteScalar()=1 Then
'Success
Else
'Failed
End If
conn.Close()
مع العلم حقل كلمة المرور اجعليه Binary
.:: Wish to become better and better ::.
السلام عليكم....المحاولتين ما زبطوا
بالنسبه لمشاركة الاخ Tammam_KD
عملت شو حكيت بس ما زبط
Dim sha1 As New SHA1CryptoServiceProvider()
Dim a() As Byte = sha1.ComputeHash(Encoding.ASCII.GetBytes(TextBox2.Text))
Dim selectsql As String
selectsql = "select * from login WHERE username=@username and password=@password"
Dim con As New SqlConnection(connectionstring)
Dim cmd As New SqlCommand(selectsql, con)
cmd.Parameters.AddWithValue("Username", TextBox1.Text)
cmd.Parameters.AddWithValue("Password", a)
'cmd.Parameters.Add("@username", SqlDbType.NVarChar, 20)
'cmd.Parameters("@username").Value = TextBox1.Text
'cmd.Parameters.Add("@password", SqlDbType.NVarChar, 20)
'cmd.Parameters("@password").Value = TextBox2.Text
Dim reader As SqlDataReader
Try
con.Open()
reader = cmd.ExecuteReader()
reader.Read()
Session("a") = reader("username").ToString
If Session("a") = "" Then
Else
Session("name:") = Me.TextBox1.Text
Session("pass") = Me.TextBox2.Text
Session("ID") = reader("userid").ToString
Response.Redirect("~\Home.aspx")
End If
reader.Close()
Catch ex As Exception
Label1.Text = "Username and/or password are incorrect."
Finally
con.Close()
End Tryيعني ما بقبل يدخل على الموقع
وكما قال الاخ VB helper
عملت حقل كلمة المرور binary
بس سجلت يوزر جديد اعطي ايرور
Implicit conversion from data type nvarchar to binary is not allowed. Use the CONVERT function to run this query.
والقيمه التى كانت مخزنه قديما بالداتا بيز
بحقل الباسورد
كتب binary data
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم
أختي الكريمة انتبهي لأمر صغير ...... لنفرض أن كلمة السر هي tammam عندما تكون مشفرة ستكون مثلا :
hg2gkjh213123hkjh31 هكذا على سبيل المثال وهي تعني tammam مشفرة ......... يجب أن تكون القيمة في قاعدة البيانات مخزنة بشكل مشفر ................. يعني القيمة في قاعدة البيانات هي (hg2gkjh213123hkjh31) ..........
وعند تسجيل الدخول يتم تشفير كلمة المرور لتصبح (hg2gkjh213123hkjh31)
يتم مقارنة القيمتين مع بعضهما فيتطابقان حتما
قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:
مثلا تفنى المسـرة ***** هكذا تفنى الهموم
ماشي انا معك ...وكلامك صحيح
انا بس دخلت باسورد ورجعت لقاعده البيانات
لقيتها مشفره يعني انا دخلت 123
ولقيتها مشفره
ومشي الحال
هلا بس جيت اسجل الدخول
ماقبل ....
انا بعتذر غلبتكم وعجئتكم
بس ازا ما صار شي
بحط ملف مرفق بالكود ان شاءالله
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم
السلام عليكم
من الممكن ان تكون العملية كاملة على طرف الكود بلغة البرمجة او على طرف قاعدة البيانات
هذين اجرائين لقاعدة البيانات
هذا الاولى هو للتسجيل حيث سيقوم بتشفير النص ومن ثم بادخاله (ملاحظة المستعرض جنني الا بدو يخلي At انو تصير ميل لهيك استبدلتها ب #)
create PROCEDURE dbo.rigsteruser
(
#username nvarchar(50),
#password nvarchar(50)
)
AS
declare #Ciphertext nvarchar(50)
declare #output int
begin
set #output=(select count(*) from Users where [UserName]=@username)
set #Ciphertext = HashBytes('MD5', #password)
if #output < 1 and #username <> '' and #password <> ''
begin
INSERT INTO [Users]
([UserName], [PassWord],[CreationDate])
VALUES (#username,#Ciphertext,getutcdate())
end
end
RETURN #outputوهذا الاجراء للمقارنة في حال كان متشابه بعد كم يوزر بهالاسم
create PROCEDURE dbo.login
(
#username nvarchar(50),
#password nvarchar(50)
)
AS
declare #Ciphertext nvarchar(50)
begin
set #Ciphertext = HashBytes('MD5', #password)
select count(*) from Users where UserName = #username and PassWord=#Ciphertext
endIn bad state
السلام عليكم ورحمه الله وبركاته
تخت ضحى برنامجي صحيح 100 بال 100 , عليك بحذف جميع المستخدمين لأنه نوع كلمه المرور لابد ان تكون قيمه ثنائيه لهذا طلعت الرساله. ما عليك الا اثناء التسجيل ان تقومي بالاتي
Dim sha1 As New SHA1CryptoServiceProvider()
Dim password() As Byte = sha1.ComputeHash(Encoding.ASCII.GetBytes(txtPassword.Text))
اي تشفير كلمة المرور وتحويلها من نص الى قيمه ثنائيه ومتأكد ستضبط معاك باذن الله
.:: Wish to become better and better ::.
X-File كتب:السلام عليكم
من الممكن ان تكون العملية كاملة على طرف الكود بلغة البرمجة او على طرف قاعدة البيانات
هذين اجرائين لقاعدة البيانات
هذا الاولى هو للتسجيل حيث سيقوم بتشفير النص ومن ثم بادخاله (ملاحظة المستعرض جنني الا بدو يخلي At انو تصير ميل لهيك استبدلتها ب #)
create PROCEDURE dbo.rigsteruser ( #username nvarchar(50), #password nvarchar(50) ) AS declare #Ciphertext nvarchar(50) declare #output int begin set #output=(select count(*) from Users where [UserName]=@username) set #Ciphertext = HashBytes('MD5', #password) if #output < 1 and #username <> '' and #password <> '' begin INSERT INTO [Users] ([UserName], [PassWord],[CreationDate]) VALUES (#username,#Ciphertext,getutcdate()) end end RETURN #outputوهذا الاجراء للمقارنة في حال كان متشابه بعد كم يوزر بهالاسم
create PROCEDURE dbo.login ( #username nvarchar(50), #password nvarchar(50) ) AS declare #Ciphertext nvarchar(50) begin set #Ciphertext = HashBytes('MD5', #password) select count(*) from Users where UserName = #username and PassWord=#Ciphertext end
السلام عليكم....شكرا الك استازنا هوه انا ما جربت الكود ....بس اكيد صح
بعتذر بس ما قدرت افهم منه شي :)
استازنا vb helper
انا عارفه انوا الكود صح 100من 100 بس انا بالبدايه ما زبط معي
بس هلا الحمد لله زبط بس انا مسحت كل اليوزر
وكانت فاضيه الداتا بيز
هلا بس جيت اسجل مستخدم جديد
ما حط الباسورد مشفره
يعني ارقام وحروف وهيك
ضلت<Binary data>
بس بالنهايه زبط
هاد شي عاادي؟؟؟
وشكرا كتير لانوا غلبناكم :)
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم
أهلا بك أختي ضحى ...............
قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:
مثلا تفنى المسـرة ***** هكذا تفنى الهموم
السلام عليكم ورحمه الله وبركاته
اخت ضحى ايش الي مش مفهوم بالضبط اذا في شي سوف اقوم بشرحه
.:: Wish to become better and better ::.
الله يجزيك الخير...انا كنت بحكي عن مشاركة الاستاز x_file
سيصبح كل شئ على ما يرام ذات يوم ....هذا هو املنا
اما ان نقول كل شئ على ما يرام اليوم....فهذا هو الوهم