Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1400 of 1492 menu
◀ ▶

Pbkdf2

Rfc2898DeriveBytes.Pbkdf2 принимает пароль, соль, число итераций, HashAlgorithmName.SHA256 и длину ключа. С теми же входами, что у Rfc2898DeriveBytes, результат совпадает с GetBytes.

Синтаксис

byte[] key = Rfc2898DeriveBytes.Pbkdf2( password, salt, iterations, HashAlgorithmName.SHA256, 32);

Пример

Давайте сравнить Pbkdf2 и GetBytes:

using System; using System.Linq; using System.Security.Cryptography; using System.Text; class Program { static void Main() { byte[] salt = Encoding.UTF8.GetBytes("12345678"); byte[] fromStatic = Rfc2898DeriveBytes.Pbkdf2( "abcde", salt, 1, HashAlgorithmName.SHA256, 32); byte[] fromObject = new Rfc2898DeriveBytes( "abcde", salt, 1, HashAlgorithmName.SHA256) .GetBytes(32); bool res = fromStatic.SequenceEqual(fromObject); Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте сравнить два вызова Pbkdf2:

using System; using System.Linq; using System.Security.Cryptography; using System.Text; class Program { static void Main() { byte[] salt = Encoding.UTF8.GetBytes("12345678"); byte[] first = Rfc2898DeriveBytes.Pbkdf2( "abcde", salt, 1, HashAlgorithmName.SHA256, 32); byte[] second = Rfc2898DeriveBytes.Pbkdf2( "abcde", salt, 1, HashAlgorithmName.SHA256, 32); bool res = first.SequenceEqual(second); Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте сравнить ключи для другого пароля:

using System; using System.Linq; using System.Security.Cryptography; using System.Text; class Program { static void Main() { byte[] salt = Encoding.UTF8.GetBytes("12345678"); byte[] first = Rfc2898DeriveBytes.Pbkdf2( "abcde", salt, 1, HashAlgorithmName.SHA256, 32); byte[] second = Rfc2898DeriveBytes.Pbkdf2( "12345", salt, 1, HashAlgorithmName.SHA256, 32); bool res = first.SequenceEqual(second); Console.WriteLine(res); } }

Результат выполнения кода:

False

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить