Arvind Singh Baghel Ответов: 1

Преобразовать строку в GUID и GUID, чтобы старая строка. И наоборот


Я создал guid из строки, используя приведенный ниже код:
private Guid GetGuid(строковый ввод)
{
Поставщик MD5CryptoServiceProvider = новый MD5CryptoServiceProvider();
byte[] inputBytes = кодировка.По умолчанию.Метод getbytes(вход);
byte[] hashBytes = провайдер.Метода computehash(inputBytes);
Идентификатор hashGuid = новый идентификатор GUID(функцию hashbytes);
возврат hashGuid;
}
предположим, я задал входной параметр "Arvind" и получил guid типа: 77f92c53-38af-42f6-8289-fddbd32f228d

теперь я хочу, чтобы преобразовать этот GUID "77f92c53-38af-42f6-8289-fddbd32f228d" обратно к моей первоначальной строку, которая является "Арвинд" . есть ли какой-нибудь способ?

Благодарность,
Арвинд

Что я уже пробовал:

...........................................................

Garth J Lancaster

MD5 - это односторонний хэш-вы никак не можете вернуться от "77f92c53-38af-42f6-8289-fddbd32f228d" к "Arvind"

Arvind Singh Baghel

Привет Гарт есть ли способ, чтобы достичь "Арвинд" на GUID "77f92c53-38af-42f6-8289-fddbd32f228d" и потом обратно "77f92c53-38af-42f6-8289-fddbd32f228d" в "Арвинд" без алгоритма MD5

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии/запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

Arvind Singh Baghel

@Karthik ваш комментарий не имеет отношения к моему запросу. пожалуйста, не комментируйте ненужные вещи.

Karthik_Mahalingam

Привет Хридес,
вы отправили сообщение Грату, но он не получит уведомления по почте или в значке уведомления, если вы не отправите сообщение с помощью кнопки "Ответить" ,

вы разместили текст с помощью "Есть вопрос или комментарий?" кнопка.

это совет для вас, чтобы позаботиться в будущем, чтобы получить быстрый ответ от пользователя.

Спасибо
Картик

F-ES Sitecore

Вам нужно использовать шифрование, а не хэширование. Google "c# encrypt decrypt string", и вы найдете множество примеров.

1 Ответов

Рейтинг:
7

Jochen Arndt

Нет никакого способа отменить хэш-операцию (получить исходную строку из хэша). Это делается намеренно и обычно является требованием.

Однако, возможно, его можно будет извлечь с помощью Атака грубой силы - Википедия[^] или А Атака по словарю - Википедия[^].

Для получения дополнительной информации просто найдите что-то вроде "обратного хэша md5".


Arvind Singh Baghel

Привет Йохен есть ли какой-нибудь способ добиться "Arvind" до guid "77f92c53-38af-42f6-8289-fddbd32f228d", а затем обратно "77f92c53-38af-42f6-8289-fddbd32f228d" до "Arvind" без MD5.
byte[] inputBytes = кодировка.По умолчанию.GetBytes("Арвинд");
Guid hashGuid = новый Guid(inputBytes);
но я получаю систему ошибок.ArgumentException: байтовый массив для GUID должен иметь длину ровно 16 байт.
и я попробовал Guid hashGuid = new Guid("Arvind")
и получение ошибки:
возврат hashGuid; System.FormatException: Guid должен содержать 32 цифры с 4 тире (xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXX).

Jochen Arndt

GUID состоит из 16 байт / 128 бит.
Строковая версия Guid(string) предназначена для преобразования допустимого строкового представления GUID в числовой формат.

Чтобы создать Guid из любой строки, вы можете создать массив байтов из строки, содержащей не менее 16 байт (массив может быть длиннее; затем используйте 16-байтовое подмножество).

Хэш-функции - самый распространенный способ сделать это. Но с хэш-функциями нет никакого математического решения, чтобы отменить операцию.

Если вам действительно нужно получить GUID из строки, просто используйте кодовые точки первых 16 символов. Если строка слишком коротка, экстент повторяет входную строку:
-Арвиндарвинд"

Но это не приведет к созданию глобального уникального идентификатора. Таким образом, у вас будет идентификатор в виде GUID, но не настоящий GUID.

Это, конечно, относится и к вашей первой попытке использовать хэш "Арвинд".

По этим причинам GUID часто генерируются из редко встречающихся строк, таких как полные названия компаний или личные имена в сочетании с датой и временем. Тогда будет только дубликат, когда другой генерирует GUID, используя ту же строку в то же время с тем же хэш-алгоритмом.

Чтобы прибить его к ногтю:
GUID должен быть уникальным значением. Они генерируются не повторно, а один раз для определенной цели, и тот, кто генерирует их, знает первоначально использованные данные.

Похоже, что вы хотите использовать GUID для чего-то другого. Чем не использовать GUID, но что-то, что соответствует вашим требованиям.