Страница: 1 | 2 | 3 | 4 | 5 |
Вопрос: Нужно реализацию md5 на MS VC++ 2003
Добавлено: 13.04.07 00:37
Автор вопроса: ZagZag | ICQ: 295002202
Ответы
Всего ответов: 70
Номер ответа: 46
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #46
Добавлено: 15.04.07 06:30
Ну у тебя наверно и машина помощнее? Сколько PasswordsPro дает?
Номер ответа: 47
Автор ответа:
W[4Fh]LF
Вопросов: 0
Ответов: 187
Web-сайт:
Профиль | | #47
Добавлено: 15.04.07 07:48
1. У неё очень хороший алгоритм инкремента паролей, вроде около 200-300 тактов на один(можешь глянуть здесь: http://www.insidepro.com/doc/003r.shtml)
2. У неё есть предрасчитанные таблицы и они здорово работают.
3. Для малого кол=-ва хешей там используется алгоритм с обращённым 4м раундом, что позволяет не генерировать хеш целиком.
Далее...
Выкинь из моего исходника вот это:
mov ecx,16
mov edi,outBuffer
@@:
lodsb
xor ah,ah
ror ax,4
shr ah,4
movsx edx,ah
mov ah,byte ptr [hexnum + edx]
movsx edx,al
mov al,byte ptr [hexnum + edx]
mov word ptr[edi],ax
add edi,2
dec ecx
jne @b
Зачем при бруте каждый раз преобразовывать хеш в строку(PPro точно так не делает)? Замени lea esi,TempStr на mov esi,outBuffer и на выходе будешь иметь в outBuffer 16 байт с хешем.
Учитывая всё это можно говорить, что данный алгоритм не уступает PPro.
Номер ответа: 48
Автор ответа:
W[4Fh]LF
Вопросов: 0
Ответов: 187
Web-сайт:
Профиль | | #48
Добавлено: 15.04.07 10:21
Ещё кстати можно развернуть цикл, если всё-таки на выходе строка нужна, прирост будет, но сомневаюсь, что ощутимый.
Номер ответа: 49
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #49
Добавлено: 15.04.07 19:13
Конечно, я сразу выкинул, везде смотрел именно на бинарный хэш.
Номер ответа: 50
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #50
Добавлено: 15.04.07 19:54
Сорри, Sharp в своем бенчмарке накапливал результат в строку, я же только тестировал само время хеширования. Попробовал накапливать результат в строку - жуть, вб настолько медленно работает со строками, что я так и недождался конца Сегодня гляну сколько PasswordsPro выдает, а то я щас не дома. Ну а так машина у меня Athlon3200 x64, 1 ГБ RAM.
Номер ответа: 51
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #51
Добавлено: 16.04.07 00:53
Хм. А куда делись дотнетчики?
Номер ответа: 52
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #52
Добавлено: 16.04.07 02:20
Athlon 2000, 1.5 GB RAM.
Шифрование 10 ГиБ данных из памяти (шифровался один и тот же блок размером 4096 байт, непрерывно подаваемый в функцию через поток)
Примерно 130 МиБ/с
Sub Main()
Dim Start As DateTime = DateTime.Now
TestMD5()
Console.WriteLine(Now.Subtract(Start))
Console.ReadLine()
Console.WriteLine()
TestInterInfo()
End Sub
Sub TestMD5()
Dim MD5 As New System.Security.Cryptography.MD5CryptoServiceProvider
Using Strm As New S(10L * 1024 * 1024 * 1024, 4096)
Console.WriteLine(Convert.ToBase64String(MD5.ComputeHash(Strm)))
End Using
End Sub
End Module
Public Class S
Inherits System.IO.Stream
Dim Buf As Byte()
Dim StreamLength As Long
Public Sub New(ByVal length As Long, ByVal bufLength As Integer)
Buf = New Byte(bufLength - 1) {}
Dim Rnd As New Random
Rnd.NextBytes(Buf)
StreamLength = length
End Sub
Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
Array.Copy(Buf, buffer, count)
StreamLength -= count
Return CInt(Math.Max(Math.Min(CLng(count), StreamLength), 0))
End Function
Public Overrides ReadOnly Property CanRead() As Boolean
Get
End Get
End Property
Public Overrides ReadOnly Property CanSeek() As Boolean
Get
End Get
End Property
Public Overrides ReadOnly Property CanWrite() As Boolean
Get
End Get
End Property
Public Overrides Sub Flush()
End Sub
Public Overrides ReadOnly Property Length() As Long
Get
End Get
End Property
Public Overrides Property Position() As Long
Get
End Get
Set(ByVal value As Long)
End Set
End Property
Public Overrides Function Seek(ByVal offset As Long, ByVal origin As System.IO.SeekOrigin) As Long
End Function
Public Overrides Sub SetLength(ByVal value As Long)
End Sub
Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
End Sub
End Class
Номер ответа: 53
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #53
Добавлено: 16.04.07 02:58
а ну хм вб6 несильно отстал
Номер ответа: 54
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #54
Добавлено: 16.04.07 03:48
Не надо нам синтетических тестов, не имеющих отношения к реальной жизни. На что способен дотнет по сравнению с PasswordsPro, реализацией от BUGOR'а, стандартной (а значит неоптимизированной) и даже PHP-реализацией в реальной задаче - брутфорсе хэшей, наглядно продемонстрировал мой бенчмарк.
Номер ответа: 55
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #55
Добавлено: 16.04.07 05:46
Ну в принципе для перебора паролей .NET не совсем удачный выбор.
Если, к примеру, контрольную сумму файла считать - больше времени уйдет на операции с диском.
Номер ответа: 56
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #56
Добавлено: 16.04.07 12:27
Номер ответа: 57
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #57
Добавлено: 16.04.07 16:27
ЭЭээ... ну я таким вообще не интерисуюсь...
Мне приятнее на своем кресле со своим компоа, а не на нахарх с ноутом
А че тут тягаться, если все скушают операции с диском?
Номер ответа: 58
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #58
Добавлено: 16.04.07 18:55
ну в ассемблере больше места для креатиффа для чего не возьми, опирации с диском в том числе... Поэтому реальные пацаны загонять дотнет и в чтении с диска...
Номер ответа: 59
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #59
Добавлено: 16.04.07 19:26
Да верю я - недокументированые команды для раскрутки шпинделя, увеличения пропускной способности IDE-канала... Куда нам дотнетчикам?
Номер ответа: 60
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #60
Добавлено: 16.04.07 20:20
... работа с фат/нтфс таблицами без участия ОС, самому ручками, работа с памятью при вычитывании данных
Видишь, я и то более реально нафантазировал, чем недокументированые команды для раскрутки шпинделя, увеличения пропускной способности IDE-канала...))