Маааленькая модификация хеш-кода MD5 — MoD5-hash :D)
Запись от mozgotron размещена 01.09.2019 в 23:50
Показов 2265
Комментарии 8
Нужна была хеш-функция на языке VB .NET, создающая 16-значные коды. В .NET Framework есть встроенные хеш-функции, например MD5. Но они генерируют длинные коды от 32 знаков и более.
Криптоаналитики говорят, что у MD5-функции много коллизий. С моим сложением двух половин число этих коллизий увеличивается вдвое. Да и пусть. Всё равно этот код имеет астрономическое число комбинаций: 1616 = 18.446.744.073.709.551.616. Пока наткнусь на коллизию, пройдёт столько же лет. | ||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 8
Комментарии
-
Почему именно 16-значные и почему это вообще имеет значение?
- MD5 следует Dispose-ть
- Вместо Encoding.Default я бы использовал Encoding.UTF8. Чтобы смена кодировки системы не приводила к изменению хеша
- От data16 можно избавиться для небольшой экономии памяти
- Если хеш нужен в верхнем регистре, то почему не используешь формат X2?
- Методу getMd5Hash лучше дать другое название чтобы не вводить в заблуждение
Это можно сказать про любой хеш с фиксированной длиной. В случае MD5 беда заключается не в количестве коллизий, а в математически доказанной возможности их нахождения.Запись от OwenGlendower размещена 02.09.2019 в 10:44
-
Запись от Usaga размещена 02.09.2019 в 10:59
-
16-значные коды хороши для индексирования всяких лексических единиц и текстов в плане большого числа комбинаций этих кодов, ведь текстовых комбинаций тоже очень много, и в плане умеренной длины кодов.
Если взять 8-значный код, возрастает вероятность того, что два разных текста будут проиндексированы одинаковым кодом.
Если взять 32-значный код, уходит много места на физическом носителе для записи этих длинных кодов. Нужно что-то среднее.
Метод Dispose для очистки ресурсов?
Encoding.UTF8 и "X2" — это отличные замечания. Сегодня вечером исправлю.
Как избавиться от data16? Так?
MD5_16_hashVB.NET 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
data32(0) = data32(0) Xor data32(8) data32(1) = data32(1) Xor data32(9) data32(2) = data32(2) Xor data32(10) data32(3) = data32(3) Xor data32(11) data32(4) = data32(4) Xor data32(12) data32(5) = data32(5) Xor data32(13) data32(6) = data32(6) Xor data32(14) data32(7) = data32(7) Xor data32(15) Dim sBuilder As New StringBuilder() Dim i As Byte For i = 0 To 7 sBuilder.Append(data32(i).ToString("X2")) Next i Return sBuilder.ToString()
Сейчас копаю CRC-64. Если изучу эту тему, буду подключать здесь всех желающих форумчан, владеющих языками C# и VB .NET к делу создания хеш-функции CRC-64 на VB .NET. Пока отслеживаю не придумал ли кто уже такую программу.
Поделить весь массив байтов, из которых состоит текст, на полином и получить 128-битный остаток, который можно конвертировать в hex-код.Запись от mozgotron размещена 02.09.2019 в 11:25
-
Запись от mozgotron размещена 02.09.2019 в 14:03
-
Запись от Usaga размещена 02.09.2019 в 15:41
-
Запись от Storm23 размещена 02.09.2019 в 16:41
-
Отредактированный программный код сокращателя хеша MD5 — MoD5-hash
Благодарю за вклад в создание этого кода OwenGlendower (cyberforum.ru).
MoD5: D335E0A87E87DF82VB.NET 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
Imports System Imports System.Text Imports System.Security.Cryptography Public Class Form1 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged TextBox2.Text = MoD5_hash(TextBox1.Text) End Sub Function MoD5_hash(ByVal input As String) As String Dim md5Hasher As MD5 = MD5.Create() Dim data As Byte() = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(input)) data(0) = data(0) Xor data(8) data(1) = data(1) Xor data(9) data(2) = data(2) Xor data(10) data(3) = data(3) Xor data(11) data(4) = data(4) Xor data(12) data(5) = data(5) Xor data(13) data(6) = data(6) Xor data(14) data(7) = data(7) Xor data(15) Dim sb As New StringBuilder() Dim i As Byte For i = 0 To 7 sb.Append(data(i).ToString("X2")) Next i Return sb.ToString() End Function End Class
Запись от mozgotron размещена 02.09.2019 в 22:31
-
Запись от mozgotron размещена 07.09.2019 в 20:50



