"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تجزئة كلمات المرور بشكل آمن في Golang/App Engine بدون syscall أو scrypt؟

كيفية تجزئة كلمات المرور بشكل آمن في Golang/App Engine بدون syscall أو scrypt؟

تم النشر بتاريخ 2024-11-08
تصفح:693

How to Securely Hash Passwords in Golang/App Engine Without syscall or scrypt?

تجزئة كلمات المرور بشكل آمن في Golang/App Engine بدون syscall أو scrypt

بينما يتم استخدام scrypt و scrypt بشكل شائع لتجزئة كلمة المرور، فقد لا يكونا كذلك مناسب لمحرك التطبيقات نظرًا لإمكانية الوصول إلى syscall. كبديل، فكر في الاستفادة من مكتبة go.crypto لتجزئة كلمة المرور بشكل آمن.

توفر حزمة go.crypto الدعم لكل من pbkdf2 وbcrypt. تمت كتابة كلا التطبيقين بالكامل بلغة Go، مما يضمن التوافق مع App Engine.

1. استخدام bcrypt

قم بتنفيذ bcrypt باستخدام الخطوات التالية:

go get golang.org/x/crypto/bcrypt
مثال للاستخدام:

import "golang.org/x/crypto/bcrypt"

func clear(b []byte) {
    for i := 0; i سينتج عن ذلك مخرجات مشابهة لـ:

$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e

2. استخدام pbkdf2

للحصول على تجزئة بسيطة باستخدام pbkdf2:

import "golang.org/x/crypto/pbkdf2"

func HashPassword(كلمة المرور، الملح []بايت) []بايت {
    تأجيل واضح (كلمة المرور)
    إرجاع pbkdf2.Key (كلمة المرور، الملح، 4096، sha256.Size، sha256.New)
}

تمرير := []بايت("foo")
الملح := []بايت("شريط")

fmt.Printf("%x\n"، HashPassword(pass, salt))
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3