سؤال

يمكن لأحد أن يقول لي ماذا يفعل بالضبط هذا كود جافا تفعل ؟

SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] bytes = new byte[20];
synchronized (random)
{
    random.nextBytes(bytes);
}

return Base64.encode(bytes);

خطوة بخطوة شرح سوف تكون مفيدة بحيث لا يمكن إعادة إنشاء هذه التعليمة البرمجية في VB.شكرا

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

المحلول

استخدام التعليمات البرمجية المتكررة يمكن أن تحصل على شيء مثل هذا

Dim randomNumGen As RandomNumberGenerator = RNGCryptoServiceProvider.Create()
Dim randomBytes(20) As Byte
randomNumGen.GetBytes(randomBytes)
return Convert.ToBase64String(randomBytes)

نصائح أخرى

وهذا يخلق مولد رقم عشوائي (SecureRandom).ثم يقوم بإنشاء صفيف بايت (byte[] بايت) ، طول 20 بايت, و بملء بيانات عشوائية.

ثم يتم ترميز باستخدام BASE64 و عاد.

لذا باختصار ،

  1. توليد 20 بايت عشوائي
  2. ترميز باستخدام قاعدة 64

فإنه يخلق SHA1 على أساس مولد العدد العشوائي (RNG) ، ثم Base64 في ترميز المقبل 20 وحدات البايت التي يتم إرجاعها بواسطة RNG.

لا أستطيع أن أخبرك لماذا يفعل هذا لكن دون المزيد من السياق :-).

هذا الرمز يحصل عشوائية قوية مشفر رقم 20 بايت في طول ، ثم Base64 في ترميز ذلك.هناك الكثير من جافا مكتبة التعليمات البرمجية هنا حتى تخمين الخاص بك هو جيدة مثل الألغام كيفية القيام بذلك في VB.

SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
byte[] bytes = new byte[20];
synchronized (random) { random.nextBytes(bytes); }
return Base64.encode(bytes);

السطر الأول يقوم بإنشاء مثيل SecureRandom فئة.هذه الدرجة يوفر التشفير القوي الزائفة مولد رقم عشوائي.

السطر الثاني يعلن صفيف بايت من طول 20.

السطر الثالث يقرأ المقبل 20 بايت عشوائي في مجموعة تم إنشاؤها في السطر 2.فإنه مزامنة على SecureRandom الكائن بحيث لا توجد صراعات من المواضيع الأخرى التي قد تكون باستخدام الكائن.ليس واضحا من هذا القانون لماذا تحتاج إلى القيام بذلك.

السطر الرابع Base64 في ترميز الناتجة صفيف بايت.وربما هذا هو لنقل أو تخزين أو عرض في شكل معروف.

في الأساس رمز أعلاه:

  1. يخلق تأمين مولد رقم عشوائي (على VB انظر الرابط أدناه)
  2. يملأ bytearray من طول 20 عشوائية بايت
  3. Base64 في ترميز النتيجة (ربما يمكنك استخدام تحويل.ToBase64String(...))

يجب أن تجد بعض المساعدة هنا:http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx

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