2013-02-24 4 views
-1

J'essaie de trouver un moyen de générer un identifiant unique pour une chaîne. Après avoir généré cet identifiant unique, je dois pouvoir récupérer ma chaîne, juste en utilisant cet identifiant.Générer un identifiant unique pour différentes chaînes?

Chaîne s = "Ceci est la chaîne";

Après une séquence de code que je recevrais une chaîne uniqueID

Et enfin en utilisant ce uniqueID, je devrais obtenir mon string s retour (« Ceci est la chaîne »).

Des idées pour résoudre ce problème?

J'ai essayé de résoudre ce avec String.GetHashCode, mais je rencontrais l'avertissement de msdn:

Il n'y a pas une valeur de code de hachage unique pour chaque valeur de chaîne unique. Différentes chaînes peuvent renvoyer le même code de hachage.

Observation: Je souhaite utiliser cette séquence de codes sur des chaînes plus longues. (Dites 1000 mots ou plus)

+4

Compte tenu des contraintes que vous évoquez, je voudrais simplement utiliser la chaîne (c.-à-pas.). –

+1

Pouvez-vous expliquer le * problème * que vous essayez de résoudre, au lieu de votre "solution"? –

+0

Qu'est-ce que vous mangez en "revenant"? Rechercher dans un dictionnaire? Ou la transformation devrait-elle être réversible? Et quel type a l'identifiant unique? – CodesInChaos

Répondre

2

Vous pourriez utiliser Base64?

Jetez un oeil ici: http://msdn.microsoft.com/en-us/library/dhx0d524.aspx

static void Main(string[] args) 
{ 
    var encoded = Base64Encode("test string"); 
    var decoded = Base64Decode(encoded); 
} 

static string Base64Encode(string text) 
{ 
    var bytes = System.Text.UTF8Encoding.UTF8.GetBytes(text); 
    return System.Convert.ToBase64String(bytes);    
} 

static string Base64Decode(string encodedText) 
{ 
    var bytes = System.Convert.FromBase64String(encodedText); 
    return System.Text.UTF8Encoding.UTF8.GetString(bytes);    
} 
+2

Quel avantage y a-t-il à baser 64 en utilisant simplement la chaîne originale? –

+1

@KentBoogaart Il est plus long XD – CodesInChaos

+0

+1 car il s'agit d'un encodage/cryptage valide. La transformation d'identité donnera aussi un résultat un peu plus court :) –

Questions connexes