powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Посчитать MD5 нескольких Byte[] не объединяя в один
6 сообщений из 6, страница 1 из 1
Посчитать MD5 нескольких Byte[] не объединяя в один
    #39163016
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть набор данных из нескольких массивов Byte[]. Хочу получить хэш всего набора. Сливать все в один массив только ради MD5 не хочу.

Можно как-то скормить MD5 по очереди все Byte[] и получить в итоге общий хэш всего набора?

Именно MD5 не обязательно. Можно что-нибудь другое. Надо просто организовать контроль целостности всего набора.
...
Рейтинг: 0 / 0
Посчитать MD5 нескольких Byte[] не объединяя в один
    #39163026
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Посчитать MD5 нескольких Byte[] не объединяя в один
    #39163043
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
static void Main(string[] args) {
    byte[] hash1 = md5(new byte[] { 1 }, new byte[] { 2 }, new byte[] { 3 });
    byte[] hash2 = md5(new byte[] { 1 , 2, 3 });
    Console.WriteLine(Convert.ToBase64String(hash1));
    Console.WriteLine(Convert.ToBase64String(hash2));
}

public static byte[] md5(params byte[][] arrays) {
    MD5 md5 = new MD5CryptoServiceProvider();
    int count = arrays.Length;
    for (int i = 0; i < count - 1; i++) {
        md5.TransformBlock(arrays[i], 0, arrays[i].Length, arrays[i], 0);
    }
    md5.TransformFinalBlock(arrays[count - 1], 0, arrays[count - 1].Length);
    return md5.Hash;
}

// Вывод:
// Uonfc331cyb83SJZevsfrA==
// Uonfc331cyb83SJZevsfrA==
...
Рейтинг: 0 / 0
Посчитать MD5 нескольких Byte[] не объединяя в один
    #39163083
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, помогло.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
		public static string BytesToStr(byte[] bytes) {
			StringBuilder str = new StringBuilder();

			for (int i = 0; i < bytes.Length; i++)
				str.AppendFormat("{0:X2}", bytes[i]);

			return str.ToString();
		}

		static void Main(string[] args) {
			using (MD5 md5 = MD5.Create()) {
				var b = new Byte[] {1, 2, 3, 4};
				byte[] m = md5.ComputeHash(b);
				Console.WriteLine(BytesToStr(m) + " = " + BytesToStr(b));
				var b1 = new Byte[] { 1, 2};
				var b2 = new Byte[] { 3, 4};
				md5.TransformBlock(b1, 0, b1.Length, null, 0);
				md5.TransformBlock(b2, 0, b2.Length, null, 0);
				md5.TransformFinalBlock(new Byte[0], 0, 0);
				byte[] m1 = md5.Hash;
				Console.WriteLine(BytesToStr(m1) + " = " + BytesToStr(b1) + BytesToStr(b2));
			} 
		} 
...
Рейтинг: 0 / 0
Посчитать MD5 нескольких Byte[] не объединяя в один
    #39163136
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С CryptoStream покрасивше будет.
...
Рейтинг: 0 / 0
Посчитать MD5 нескольких Byte[] не объединяя в один
    #39163300
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучС CryptoStream покрасивше будет.
Как?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Посчитать MD5 нескольких Byte[] не объединяя в один
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]