كيف يمكنني إعادة تجزئة SHA512 في C # الذي يناسب PHP SHA512؟

StackOverflow https://stackoverflow.com/questions/1419069

  •  07-07-2019
  •  | 
  •  

سؤال

والسؤال هو الى حد كبير على النفس التفسيرية. I غوغلد العديد من المواقع، والعديد من الأساليب، وحاولت العديد من ترميزات، ولكني لا أستطيع الحصول عليه للمباراة.

وأنا أحاول أن جعل السلسلة "ASDASD" مباراة. ( http://www.fileformat.info/tool/hash.htm؟text= ASDASD )

هل كانت مفيدة؟

المحلول

وهذه محاولة

using System.Security.Cryptography

public static string HashPassword(string unhashedPassword)
{
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}

نصائح أخرى

وBitConverter يعمل على ما يرام ...

var testVal = "asdasd";
var enc = new ASCIIEncoding();
var bytes = enc.GetBytes( testVal );

var sha = new SHA512Managed();
var result = sha.ComputeHash( bytes );

var resStr = BitConverter.ToString( result );
var nodash = resStr.Replace( "-", "" );

nodash.Dump();

و(الثابتة للتجزئة 512 بت، آسف:)

ولقد قضى عدة ساعات في محاولة للحصول على وظيفة تجزئة .NET لتتناسب مع وظيفة القبو PHP ل. غير مسلي.

وهناك تحديات متعددة هنا، منذ تنفيذ PHP من القبو بإرجاع سلسلة base64 ترميز، ولا تفعل متعددة التكرار التجزئة (مثل 5000 هو الافتراضي لالقبو.) لم أكن قادرا على الحصول على مخرجات مماثلة من صافي باستخدام العديد من المكتبات، حتى وجدت CryptSharp. أنها تقبل من الملح على غرار وظيفة في PHP (أو الأصلي C) (على سبيل المثال "$6$round=5000$mysalt"). لاحظ أنه لا يوجد زائدة $، وأنه إذا لم تقم بتوفير الملح سوف الإنشاء التلقائي واحد عشوائي.

ويمكنك العثور على CryptSharp هنا: http://www.zer7.com/software.php؟page=cryptsharp

وحسن القراءة الخلفية: - http://www.akkadia.org/drepper/SHA-crypt.txt

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