我们经常使用laravel中的hash进行对数据进行加密,下面我们将laravel中的方法转变成go中的方法
驱动使用默认的 bcrypt
生成
1 2 3 4 5
| \Illuminate\Support\Facades\Hash::make("123456") 会产生随机字符串并不是固定值 // $2y$10$ozKiyZy7eudP64XhJHqSfu1PkviK0Ahg2348iX0cDDUKnw9r8pwLO
// $2y$10$VH1VZUo32vNzm1AsoU0qXO14hkp61O1TfL9M1wDiWXOg1QPoisnbO
|
在看看go怎么实现
1 2 3 4 5
| hashedValue, _ := bcrypt.GenerateFromPassword([]byte("123456"), bcrypt.DefaultCost) fmt.Print(string(hashedValue))
// $2a$10$2W9wylmq3GaxUQBfdfCTYeJitxJfRuz6xJKRD2A/L/Zs8BUriiJJS // $2a$10$kKAS.WmPwLBAKLQQifEx6.LIlgHBEHzAa.oaMV/UuMcmwRNdENEU2
|
验证
1 2 3 4 5 6 7 8 9
| \Illuminate\Support\Facades\Hash::check("123456",'$2y$10$ozKiyZy7eudP64XhJHqSfu1PkviK0Ahg2348iX0cDDUKnw9r8pwLO') // true \Illuminate\Support\Facades\Hash::check("123456",'$2y$10$VH1VZUo32vNzm1AsoU0qXO14hkp61O1TfL9M1wDiWXOg1QPoisnbO') // true
\Illuminate\Support\Facades\Hash::check("123456",'$2a$10$2W9wylmq3GaxUQBfdfCTYeJitxJfRuz6xJKRD2A/L/Zs8BUriiJJS') // true \Illuminate\Support\Facades\Hash::check("123456",'$2a$10$kKAS.WmPwLBAKLQQifEx6.LIlgHBEHzAa.oaMV/UuMcmwRNdENEU2') // true
|
在看看go怎么实现
1 2 3 4 5 6 7 8 9 10 11 12 13
| var err error err = bcrypt.CompareHashAndPassword([]byte("$2y$10$ozKiyZy7eudP64XhJHqSfu1PkviK0Ahg2348iX0cDDUKnw9r8pwLO"), []byte("123456")) fmt.Println(err) // nil err = bcrypt.CompareHashAndPassword([]byte("$2y$10$VH1VZUo32vNzm1AsoU0qXO14hkp61O1TfL9M1wDiWXOg1QPoisnbO"), []byte("123456")) fmt.Println(err) // nil err = bcrypt.CompareHashAndPassword([]byte("$2a$10$2W9wylmq3GaxUQBfdfCTYeJitxJfRuz6xJKRD2A/L/Zs8BUriiJJS"), []byte("123456")) fmt.Println(err) // nil err = bcrypt.CompareHashAndPassword([]byte("$2a$10$kKAS.WmPwLBAKLQQifEx6.LIlgHBEHzAa.oaMV/UuMcmwRNdENEU2"), []byte("123456")) fmt.Println(err) // nil
|
为nil 相当于就是true