подскажите. Hesh MD5

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Свиридов С
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.09.2008 (Вс) 7:29

подскажите. Hesh MD5

Сообщение Свиридов С » 05.10.2008 (Вс) 8:16

как получить хэш текстовой строки используя MD5 ?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: подскажите. Hesh MD5

Сообщение Nord777 » 05.10.2008 (Вс) 11:49

Код: Выделить всё
Imports System.Security.Cryptography
Imports System.Text

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MD5 As New MD5CryptoServiceProvider
        Dim BArr() As Byte = Encoding.Default.GetBytes("Хэшируемая строка")
        Dim HashArr() As Byte = MD5.ComputeHash(BArr)

        'получить строку в шестнадцатиричном виде
        Dim SB As New StringBuilder
        For Each B As Byte In HashArr
            SB.AppendFormat("{0:X2} ", B)
        Next
        MsgBox(SB.ToString)
    End Sub

End Class
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Свиридов С
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.09.2008 (Вс) 7:29

Re: подскажите. Hesh MD5

Сообщение Свиридов С » 06.10.2008 (Пн) 1:15

Nord777 благодарю.
но мне надо что бы в результате хэширования получилось примерно в таком виде: 911b70113eef8fffb94344d0470ac1f0

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: подскажите. Hesh MD5

Сообщение Williams » 06.10.2008 (Пн) 2:01

Свиридов С писал(а):Nord777 благодарю.
но мне надо что бы в результате хэширования получилось примерно в таком виде: 911b70113eef8fffb94344d0470ac1f0


Замени фрагмент вышеуказанного кода на

Код: Выделить всё
  For Each B As Byte In HashArr
            SB.Append(B.ToString("x2"))

        Next
И вы думаете, что вас оставят в живых после прочтения этого поста?

Свиридов С
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 28.09.2008 (Вс) 7:29

Re: подскажите. Hesh MD5

Сообщение Свиридов С » 06.10.2008 (Пн) 13:12

спасибо ребята !

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: подскажите. Hesh MD5

Сообщение a1ewka-gal4onok » 16.01.2010 (Сб) 18:06

Господа, из-за чего идёт ругань на
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: подскажите. Hesh MD5

Сообщение MIT » 16.01.2010 (Сб) 18:21

Наверное из-за того, что процедура для события MyBase.Load уже определена. Но телепатов нет, так что ругань в студию.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: подскажите. Hesh MD5

Сообщение a1ewka-gal4onok » 16.01.2010 (Сб) 18:44

Form1.vb
Код: Выделить всё
Public Class Form1

End Class


md5sum.vb
Код: Выделить всё
Imports System
Imports System.Security.Cryptography
Imports System.Text


Public Class md5sum
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MD5 As New MD5CryptoServiceProvider
        Dim BArr() As Byte = Encoding.Default.GetBytes("Хэшируемая строка")
        Dim HashArr() As Byte = MD5.ComputeHash(BArr)

        'получить строку в шестнадцатиричном виде
        Dim SB As New StringBuilder
        For Each B As Byte In HashArr
            SB.AppendFormat("{0:X2} ", B)
        Next
        MsgBox(SB.ToString)
    End Sub
End Class


И, собственно, сама "ругань" в окошке (две кнопки на нём: Yes и No):
There were build errors. Would you like to continue and run the last successful build?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: подскажите. Hesh MD5

Сообщение MIT » 16.01.2010 (Сб) 19:05

Класс md5sum - это не форма, событий там нет, тем более события загрузки, поэтому никаких Handles MyBase.Load в таком классе быть не может. Либо перенеси функцию в код формы, либо замени Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load на Private Sub CalculateHash()

Добавлено:
Это не та ругань, которую от тебя хотелось бы слышать. Правильная ругань та, которая находится в окошке "Error List", а то сообщение, что ты привел появляется всегда при любой ошибке.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: подскажите. Hesh MD5

Сообщение a1ewka-gal4onok » 16.01.2010 (Сб) 19:21

Ну да :) Ступил :)
Event 'Load' cannot be found.

Когда добавляю в проект класс или модуль, расширение почему-то всё равно *.vb.

Ладно, строки это у меня не очень важно, хотя разобраться всё же надо. На Visual Basic 6 я свободно прикреплял класс для проверки md5-суммы файла.
Искал-искал, а для VB.NET так решения и не нашёл. Скажите, это можно делать, так сказать, штатными средствами VB.NET?
Суть программы, которую пишу: программа получает файл по локальной сети, она же должна уметь просчитать md5-сумму принятого файла.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: подскажите. Hesh MD5

Сообщение MIT » 16.01.2010 (Сб) 19:37

a1ewka-gal4onok писал(а):Когда добавляю в проект класс или модуль, расширение почему-то всё равно *.vb.
Фишка в том, что в одном файле может находится стопицот классов, столько же модулей, и раз в десять больше структур, поэтому выделение под каждый из них отдельного файла с персональным расширение нерационально.

А в чем, собственно, сложность? Достаточно посмотреть что же за функция такая MD5.ComputeHash и заметить, что она возвращает массив байт и принимает в качестве параметра массив байт, к которому и приводится строка кодом Dim BArr() As Byte = Encoding.Default.GetBytes("Хэшируемая строка").
Просто отправляй в функцию свой файл, да и все дела (правдв если файл большой, то придется повозиться).
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: подскажите. Hesh MD5

Сообщение a1ewka-gal4onok » 16.01.2010 (Сб) 19:39

Да, файлы до 4 ГБ будут. Будут и меньше, но объём их всё равно выше 2 ГБ.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: подскажите. Hesh MD5

Сообщение MIT » 16.01.2010 (Сб) 19:44

Вся возня заключается в передаче в качестве аргумента не массива, а потока. Прояви хоть немного любознательности и нажми F2 на клавиатуре.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

a1ewka-gal4onok
Новичок
Новичок
 
Сообщения: 29
Зарегистрирован: 31.10.2008 (Пт) 17:39

Re: подскажите. Hesh MD5

Сообщение a1ewka-gal4onok » 16.01.2010 (Сб) 19:47

MIT, благодарю за ответы!
Ушёл в MSDN :)


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

    TopList