scrypt加密password SCrypt對密碼進行加密


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、新建項目ConsoleSCrypt,使用NuGet程序包管理器添加SCrypt

 

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

using CryptSharp.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleSCrypt
{
    class Program
    {
        static void Main(string[] args)
        {
            #region SCrypt對密碼進行加密及密碼驗證
            Console.WriteLine("SCrypt");
            string pwd = "SCrypt明文信息";
            //HashAlgorithm hash = HashAlgorithm.Create("MD5");
            HashAlgorithm hash = MD5.Create();
            byte[] ms5bytes = hash.ComputeHash(Encoding.UTF8.GetBytes(pwd));
            Console.WriteLine($"ms5bytes :{BitConverter.ToString(ms5bytes).Replace("-",string.Empty)}");
            byte[] salt = new byte[10];
            byte[] salt2 = new byte[4];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            rng.GetBytes(salt);
            rng.GetBytes(salt2);
            Console.WriteLine(BitConverter.ToString(salt2));
            byte[] result = SCrypt.ComputeDerivedKey(Encoding.UTF8.GetBytes(pwd), salt, 4, 8, 2, 2, 5);
            Console.WriteLine($"加密以后的密文:{BitConverter.ToString(result).Replace("-","").ToLower()}");
            #endregion
            Console.ReadLine();
        }
    }
}

 

4、運行結果:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM