PBKDF2加密

Posted chucklu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PBKDF2加密相关的知识,希望对你有一定的参考价值。

password - the password that needs to be hashed. This should be converted
into a char array before passing.

salt- salt value that should append to the password.

iterations- no. of iterations to be done. This value can be used to adjust the speed of the algorithm.

keyLength- This is the required output length of the hashed function.

This function returns a byte array that needs to be converted into a string using a suitable hex encoder.

 

需要注意的是,加密的结果是字节数组。在存储到数据库的时候,可以转换为十六进制的字符串或者Base64字符串

        [Test]
        public void Pbkdf2Test()
        {

            string saltString = "8291f825-5772-4b3b-a28c-18887099f6d4";
            var array = Encoding.UTF8.GetBytes(saltString);
            GetHexString(array, 16);
            GetHexString(array, 128);
            GetHexString(array,256);
            GetHexString(array,512);

            var rfc2898DeriveBytes = new Rfc2898DeriveBytes("123", array, 4000);
            var result2 = rfc2898DeriveBytes.GetBytes(40);
            Console.WriteLine($"加密结果数组长度{result2.Length}");
            var string2 = Convert.ToBase64String(result2);
            Console.WriteLine(string2);
            Console.WriteLine(string2.Length);
        }

        public void GetHexString(byte[] array, int keyLength)
        {
            var rfc2898DeriveBytes = new Rfc2898DeriveBytes("123", array, 4000);
            var result = rfc2898DeriveBytes.GetBytes(keyLength);
            Console.WriteLine($"加密结果数组长度{result.Length}");

            var hexString = ByteArrayToString(result);
            Console.WriteLine(hexString);
            Console.WriteLine("========Split========");
        }

        public static string ByteArrayToString(byte[] ba)
        {
            var hex = new StringBuilder(ba.Length * 2);
            foreach (var b in ba)
                hex.AppendFormat("{0:x2}", b);
            return hex.ToString();
        }

 

 

以上是关于PBKDF2加密的主要内容,如果未能解决你的问题,请参考以下文章

密码学系列之:1Password的加密基础PBKDF2

PBKDF2加密

在 Java 中使用 PBKDF2 进行密码验证

PBKDF2加密的实现

使用 PBKDF2 和 AES256 进行加密和解密 - 需要实际示例 - 如何获取派生密钥

使用 Jasypt 使用 PBKDF2WithHmacSHA1 密钥进行基于密码的 AES 加密