Angenommen, ich habe eine Zeichenfolge, etwa "70c3bdc5ceeac673". Ist es in C# möglich, basierend auf dieser Zeichenfolge eine GUID-ähnliche Struktur zu erstellen (DB-Spalte akzeptiert nur Uniqueidentifier)? Das Ziel wäre, dass der gleiche Guid oder einzigartige Stich jedes Mal erstellt wird, wenn ich diesen Wert übergebe. Ich denke im Wesentlichen wie ein Hmac SHA1 Hash mit einem Schlüssel.Erstellen Sie eine konsistente GUID oder einen eindeutigen Bezeichner aus einer Zeichenfolge
Antwort
Erstellen Guid
von SHA256 Hash scheint wie eine einfache Option:
var guid = new Guid(
System.Security.Cryptography.SHA256.Create()
.ComputeHash(Encoding.UTF8.GetBytes("70c3bdc5ceeac673")).Take(16).ToArray());
-Code verwirft die Hälfte der Hash-Ergebnis, aber nicht an der Tatsache ändern, dass die gleiche Zeichenfolge immer auf die gleiche Guid umgewandelt wird.
Alternativ kann je nach Ihren Anforderungen nur die Umwandlung von String in Byte-Array und das Auffüllen mit 0/Entfernen von Extra reichen.
Das kann was ich brauche. Die anfängliche Zeichenfolge wird eine Geräte-UUID sein, solange diese Zeichenfolge immer in die gleiche GUID umgewandelt wird, die alles sein sollte, was ich brauche. Ich werde es ausprobieren. –
Wenn Sie wissen, dass alle Ihre Saiten sind innerhalb von 16 nicht-weiten Zeichen (wie 70c3bdc5ceeac673
), können Sie diese verwenden:
// value is your string
var bytes = new byte[16];
Encoding.UTF8.GetBytes(value, 0, value.Length, bytes, 0);
var guid = new Guid(bytes);
- 1. eine Variable aus einer Zeichenfolge mit dem Namen erstellen oder eine Zeichenfolge erstellen aus einer Variablen
- 2. Erstellen einen eindeutigen alphanumerischen 10-stellige Zeichenfolge
- 3. Parse GUID aus Zeichenfolge
- 4. So weisen Sie mehreren Datenrahmeneinträgen einen eindeutigen Bezeichner zu
- 5. So erzeugen Sie konsistente GUID mit Wix-Erntemethode
- 6. Erstellen Sie eine Enum-Factory-Methode aus einem eindeutigen Instanzwert
- 7. So erstellen Sie einen neuen Datensatz mit einer bestimmten GUID
- 8. So erstellen Sie einen polymorphen numerischen Wert aus einer Zeichenfolge
- 9. Erstellen Sie einen Ruby Proc aus einer Zeichenfolge
- 10. Leistung - mit Guid-Objekt oder GUID-Zeichenfolge als Schlüssel
- 11. Objektname aus einer Zeichenfolge erstellen
- 12. Wie würden Sie eine kommagetrennte Zeichenfolge aus einer Liste erstellen?
- 13. SCRIPT1028: Erwarteter Bezeichner, Zeichenfolge oder Nummer
- 14. Identifizieren Sie Microsoft Band mit einem eindeutigen Bezeichner
- 15. Erstellen einer langen Zeichenfolge aus einer Ergebnismenge
- 16. Komponente aus einer Zeichenfolge erstellen
- 17. Django - Disqs erkennt keinen eindeutigen Bezeichner
- 18. GUID aus einer Zeichenfolge generieren, die nicht im GUID-Format ist
- 19. Ergreifen Sie eine Zeichenfolge aus einer Datei in einer Zeile?
- 20. Erstellen einer Zeichenfolge aus einer Liste
- 21. Erstellen einer Zeichenfolge Variablenname aus dem Wert einer anderen Zeichenfolge
- 22. Erstellen Sie einen regulären Ausdruck aus der Zeichenfolge
- 23. Erstellen Sie ein Array aus eindeutigen Werten aus Spalte
- 24. Wie Sie eine GUID und einen 64-Bit-Zeitstempel in eine andere GUID hashen
- 25. Ziehen Sie eine Zeichenfolge aus einer Zeichenkette
- 26. Erstellen Sie eine "Paarung" aus einer Grafik?
- 27. GUID aus string
- 28. Erstellen einer (nicht eindeutigen) Zufallsliste
- 29. Drucken Sie eine GUID-Variable
- 30. Extrahieren einer Zeichenfolge aus einer anderen URL oder Zeichenfolge
Mögliche Duplikat von [C# guid und SQL unique] (http: // Stackoverflow .com/questions/1435908/c-sharp-guid-and-sql-uniqueidentifier) – Jaycee
@Jack Diese Antwort ist über das Erstellen einer Speicher-Guids in SQL-Server, ich habe keine Probleme damit, aber ich muss in der Lage sein, das gleiche zu erstellen exakte Guid basierend auf der '70c3bdc5ceeac673' Zeichenfolge. Grundsätzlich als Form der Verschlüsselung. –
Die Klasse "Guid" hat einen Konstruktor, der eine Zeichenfolge verwendet. Sie müssen nur ein Schema für das Erweitern der Eingaben erstellen, die zu kurz sind: Ihr Beispiel hat nur 64 Bits, während eine GUID 128 benötigt. Vielleicht verstehe ich die Frage falsch? –