PDA

View Full Version : سوال: ارسال پسورد بصورت كد شده



Iran58
شنبه 19 آذر 1390, 07:08 صبح
سلام
من مي خواهم همنگام ثبت كاربر جديد و همجنين لاگين كردن پسورد بصورت كد شده به بانك اطلاعاتي ارسال شود
از چه كدي بايد استفاده كنم(تحت وب برنامه را دارم مي نويسم)
باتشكر

ASKaffash
شنبه 19 آذر 1390, 07:26 صبح
سلام
ربطی به نسخه Web یا Win ندارد شما باید Hash شده رمز را در فیلد مورد نظر در بانک بنویسید و هنگام مقایسه پس از دریافت رمز از کاربر Hash را محاسبه و با Hash شده درون بانک مقایسه کنید در نمونه کدهای #C در تالار مثلا به دنبال MD5 / Hash / ... بگردید و نمونه سورس ها را بخوانید

zarrinnegar
شنبه 19 آذر 1390, 08:57 صبح
یه راه داره اون هم اینه که فیلد password رو توی دیتابیس از نوع باینری در نظر بگیری و بعد از روش کد گذاری sql استفاده کنی که کد شده توی دیتابیس قرار بگیره
برای گذاشتن رمز در دیتابیس
ENCRYPTBYPASSPHRASE(@password ,textbox1.text)
@password یک کلمه رمز است که شما با آن رمز کاربر را کد میکنی

و با این دستور میتونی فیلد رو نمایش بدی

convert(nvarchar(max) ,DECRYPTBYPASSPHRASE(@password,pass_field]))

البته اینها توی sql هست و باید با store procedure کار کنی

Iran58
شنبه 19 آذر 1390, 10:55 صبح
سلام
ربطی به نسخه Web یا Win ندارد شما باید Hash شده رمز را در فیلد مورد نظر در بانک بنویسید و هنگام مقایسه پس از دریافت رمز از کاربر Hash را محاسبه و با Hash شده درون بانک مقایسه کنید در نمونه کدهای #C در تالار مثلا به دنبال MD5 / Hash / ... بگردید و نمونه سورس ها را بخوانید
سلام
مهندس جان در sql چگونه مي توان اين عمل را انجام داد؟

ASKaffash
شنبه 19 آذر 1390, 11:10 صبح
سلام
درون SQL میتوان با توابع EncryptByPassPhrase مقدار را Encrypy کرد ولی اگر امنیت مهم است در سمت برنامه کاربردی با ترکیب الگوریتمهای شخصی و عمومی اینکار را انجام دهید چون نباید کلید رمز نگاری آشکار شود یک مثال از درون Help :


USE AdventureWorks;GO-- Create a column in which to store the encrypted data.ALTER TABLE Sales.CreditCard ADD CardNumber_EncryptedbyPassphrase varbinary(256); GO-- First get the passphrase from the user.DECLARE @PassphraseEnteredByUser nvarchar(128);SET @PassphraseEnteredByUser = 'A little learning is a dangerous thing!';-- Update the record for the user's credit card.-- In this case, the record is number 3681.UPDATE Sales.CreditCardSET CardNumber_EncryptedbyPassphrase = EncryptByPassPhrase(@PassphraseEnteredByUser , CardNumber, 1, CONVERT( varbinary, CreditCardID))WHERE CreditCardID = '3681';GO

Iran58
شنبه 19 آذر 1390, 12:01 عصر
سلام
درون SQL میتوان با توابع EncryptByPassPhrase مقدار را Encrypy کرد ولی اگر امنیت مهم است در سمت برنامه کاربردی با ترکیب الگوریتمهای شخصی و عمومی اینکار را انجام دهید چون نباید کلید رمز نگاری آشکار شود یک مثال از درون Help :

باسلام
پس با توجه به نظر جنابعالي بهتره اين كد گزاري در سمت برنامه انجام بشه بهتر است تا در قسمت بانك اطلاعاتي

zarrinnegar
شنبه 19 آذر 1390, 13:05 عصر
باسلام
پس با توجه به نظر جنابعالي بهتره اين كد گزاري در سمت برنامه انجام بشه بهتر است تا در قسمت بانك اطلاعاتي

البته بستگی داره
اگه طرف client کد کنی اون هم با md5 و یا hash و ... دیگه نمیشه به حالت اول درش آورد یعنی دیکد نمیشه
وهی دریافتی رو باید کد کنی با کد شده مقایسه کنی
این برای زمانی خوبه که نمیخوای سر راه ارتباط با سرور کسی برنامه رو هک کنه و الگورتم های مختلفی هم برای کد کردن داره
ولی اگه توی دیتابیس بخوای نشه اطلاعات رو دید و اون رو امن کرد از همون راهی که گفتم