سؤال

في تطبيق ASP.NET Web الخاص بي، أجني كلمات مرور المستخدم الخاصة بي مع SHA512.

على الرغم من الكثير من ذلك، فإن googling أنا غير واضح كيف ينبغي لي تخزينها في قاعدة البيانات (SQL2005) - يظهر الكود أدناه أساسيات كيفية إنشاء التجزئة كسلسلة وأنا أدرجها حاليا في قاعدة البيانات في عمود char (88) كما يبدو أن الطول الذي تم إنشاؤه باستمرار

يحتفظ به كسلسلة أفضل طريقة للقيام بذلك، إذا كان الأمر كذلك، فسيكون الأمر دائما 88 حرفا على SHA512 (كما رأيت بعض الأشياء الغريبة على جوجل)؟

 Dim byteInput As Byte() = Encoding.UTF8.GetBytes(sSalt & sInput)
 Dim hash As HashAlgorithm = New SHA512Managed()
 Dim sInsertToDatabase As String =  Convert.ToBase64String(hash.ComputeHash(byteInput))
هل كانت مفيدة؟

المحلول

مخرجات SHA512 512 بت أو 64 بايت. يمكنك تخزين تلك البايتات 64 في عمود ثنائي، إذا كنت ترغب في ذلك.

إذا كنت ترغب في التعامل مع التجزئة خارج التطبيق الخاص بك هو أكثر راحة لتخزين سلسلة Base64، كما تفعل الآن. يضيف Base64 ما يقرب من 33٪ من النفقات العامة الثابتة، حتى تتمكن من توقع أن تكون السلسلة دائما 88 حرفا.

ومع ذلك، ASP.NET لديه نظام مصادقة شامل إلى حد ما المدمج، والتي يجب أن تستخدمها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top