Скажите, что у меня есть строка, что-то вроде «70c3bdc5ceeac673». Возможно ли в C# создать такую GUID-структуру (DB Column принимает только uniqueidentifier) на основе этой строки? Цель заключалась бы в том, что одно и то же Guid или уникальное sting создается каждый раз, когда я передаю это значение. Я предполагаю, что это похоже на хэш Hmac SHA1 с ключом.Создайте GUID GUID или уникальный идентификатор из строки
ответ
Создание Guid
из SHA256 хэша показаться простым вариантом:
var guid = new Guid(
System.Security.Cryptography.SHA256.Create()
.ComputeHash(Encoding.UTF8.GetBytes("70c3bdc5ceeac673")).Take(16).ToArray());
код сбрасывает половину результата хеширования, но это не меняет тот факт, что та же строка всегда преобразованная в тот же Guid.
В качестве альтернативы в зависимости от ваших требований достаточно просто преобразовать строку в массив байтов и заполнить с помощью 0/удаления дополнительного.
Возможно, это то, что мне нужно. Начальная строка будет UUID устройства, если эта строка всегда преобразуется в тот же указатель, который должен быть всем, что мне нужно. Я проверю это. –
Если вы знаете, что все строки в пределах 16 без широких символов (как 70c3bdc5ceeac673
), вы можете использовать это:
// value is your string
var bytes = new byte[16];
Encoding.UTF8.GetBytes(value, 0, value.Length, bytes, 0);
var guid = new Guid(bytes);
- 1. Создайте уникальный идентификатор
- 2. GUID из строки
- 3. GUID, но не действительно GUID
- 4. Альтернативный идентификатор строки для объектов идентификатора Guid
- 5. Получить идентификатор GUID по типу
- 6. Разбор GUID из строковой строки
- 7. Получить GUID или собственный GUID из Active Directory
- 8. Уникальность GUID
- 9. ASP.NET GUID как уникальный идентификатор - URL-адрес перезаписи
- 10. Как получить уникальный идентификатор учетной записи пользователя (GUID) в Windows?
- 11. Как предсказать следующий GUID из данного GUID?
- 12. . GUID-структура .NET.
- 13. Nullable GUID (Guid?) Как идентификатор для класса домена (NHibernate)
- 14. Сгенерировать идентификатор (GUID) из оператора слияния
- 15. MVC - идентификатор GUID и таблицы
- 16. Идентификатор GUID для Java (Android)
- 17. MSSQL guid для строки
- 18. Какова длина строки GUID?
- 19. Инициализация const GUID * (GUID pointer)
- 20. Windows GUID или список приложений
- 21. Создание ActiveXObject из GUID
- 22. Почему GUID GUID отображает разные части GUID с различной капитализацией?
- 23. Должен ли я использовать Guid и Guid.Empty или nullable Guid?
- 24. Измените мой GUID GUID в wix?
- 25. Замена всех GUID в файле с новыми GUID из командной строки
- 26. Преобразование неуправляемого GUID в управляемый Guid^
- 27. Сокращенный GUID с использованием CRC
- 28. Производительность - использование объекта Guid или Guid string в качестве ключа
- 29. GUID, 30 символов случайной строки
- 30. Создайте криптографически безопасный случайный GUID в .NET.
Возможный дубликат [C# GUID и SQL UniqueIdentifier] (HTTP: // StackOverflow .com/questions/1435908/c-sharp-guid-and-sql-uniqueidentifier) – Jaycee
@Jack Этот ответ касается создания хранения команд в sql-сервере, у меня нет никаких проблем с этим, но мне нужно иметь возможность создавать те же точное руководство, основанное на строке '70c3bdc5ceeac673'. В основном это форма шифрования. –
Класс 'Guid' имеет конструктор, который принимает строку. Вам просто нужно придумать какую-то схему для увеличения слишком коротких входных данных: ваш пример имеет только 64 бит, а GUID - 128. Может быть, я не понимаю вопрос? –