bcrypt加密password BCrypt對密碼進行加密及密碼驗證

1、bcrypt相關描述

bcrypt

bcrypt是專門爲密碼存儲而設計的算法,基於Blowfish加密算法變形而來,由Niels Provos和David Mazières發表於1999年的USENIX。

bcrypt最大的好處是有一個參數(work factor),可用於調整計算強度,而且work factor是包括在輸出的摘要中的。隨着攻擊者計算能力的提高,使用者可以逐步增大work factor,而且不會影響已有用戶的登陸。

bcrypt經過了很多安全專家的仔細分析,使用在以安全著稱的OpenBSD中,一般認爲它比PBKDF2更能承受隨着計算能力加強而帶來的風險。bcrypt也有廣泛的函數庫支持,因此我們建議使用這種方式存儲密碼。

scrypt

scrypt是由著名的FreeBSD黑客 Colin Percival爲他的備份服務 Tarsnap開發的。

和上述兩種方案不同,scrypt不僅計算所需時間長,而且佔用的內存也多,使得並行計算多個摘要異常困難,因此利用rainbow table進行暴力攻擊更加困難。scrypt沒有在生產環境中大規模應用,並且缺乏仔細的審察和廣泛的函數庫支持。但是,scrypt在算法層面只要沒有破綻,它的安全性應該高於PBKDF2和bcrypt。

https://baike.baidu.com/item/PBKDF2/237696?fr=aladdin

 

2、新建項目ConsoleBCrypt,使用NuGet程序包管理器添加BCrypt

 

 

 

3、Program.cs中添加如下代碼:

using DevOne.Security.Cryptography.BCrypt;
using System;

namespace ConsoleBCrypt
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("BCryptHelper");
            string salt = BCryptHelper.GenerateSalt();
            Console.WriteLine($"產生隨機鹽 salt:{salt}");

            string password = "1234567890";
           Console.WriteLine($"明文:{password}");
            string pwd = BCryptHelper.HashPassword(password, salt);
            Console.WriteLine($"加密以後的密文:{pwd}");
            bool isMatchpasswordAndpwd = BCryptHelper.CheckPassword("1234567890", pwd);
            Console.WriteLine($"明文和加密以後的密文是否匹配:{isMatchpasswordAndpwd}");
            Console.ReadLine();
        }
    }
}

4、運行結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章