2017-07-10 4 views
-2

Ich gab eine Aufgabe, die eine Eingabe Integer-Wert, diese Integer maximal 4 Länge verschlüsselt, aber ich bin erforderlich, in eine alphanumerische Zeichenfolge zu verschlüsseln. Abgesehen davon muss das Ergebnis, dass ich aus dem gleichen Wert (zB 10) den Wert erzeugt habe, nicht gleich sein. Der schwierigste Teil ist, dass die verschlüsselte Zeichenfolge maximal nur 15 Länge haben kann, da wir sie in den Abfrage-String setzen müssen. Es war eine schwierige Aufgabe und ich habe versucht, Google zu fragen, und ich habe keine Lösung gefunden, die mir dabei helfen kann. die ganze Länge ist zu lang und erfüllt nicht die Anforderung, die ich brauchte. Irgendein verschlüsselter Fachmann kann mir dabei helfen?kurze Verschlüsselung für Integer

+1

Bitte geben Sie einige Beispieleingänge und -ausgänge an (in Ihrem Post, nicht als Kommentar). _'maximum 4 integer' könnte auf viele Arten gelesen werden. Auch warum ist die Länge so wichtig für Sie? – mjwills

+0

es ist nur reine ganze Zahl, Eingabe maximal 4 ganze Zahl, Ausgabe maximal alphanumerische 15 Zeichen –

+1

Können Sie Ihren Führer fragen, warum er/sie es so will? Außerdem habe ich keine Ahnung was '6 Integer' bedeutet. – mjwills

Antwort

-2
public static string GetUniquePasswordSalt(string password) 
{ 
    string uniqueSaltValue = ""; 
    Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(password, 16); 
    uniqueSaltValue = Convert.ToBase64String(rfc2898.Salt); 
    return uniqueSaltValue; 
} 

Out wird "HB6yY + f5fyOaFFyrKEcPYw ==" für "01"

Versuchen Rfc2898DeriveBytes

https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v=vs.110).aspx

+0

hi kann ich wissen, wie man es entschlüsseln? –

+0

@RyanShine der Code, den ich nach meiner Anforderung verwenden, die nicht entschlüsselt werden kann, ich nicht Passwort in DB speichern, dafür verwende ich Hash-Algorithmus mit Salz und dann concat es und danach entschlüssele ich es. Ich kenne deine Anforderung nicht. Aber das wird Ihnen helfen: https://www.codeproject.com/Articles/38804/Encryption-and-Decryption-on-the-NET-Framework – Nik

+0

Warum nicht, dass zwei Menschen eher ihre Angelegenheiten kümmern Stimme geben nach unten für einen Anfänger habe ich nur versucht zu helfen. – Nik

0

Ich gehe davon aus, dass Sie eine Funktion zur Eingabe einer vierstelligen Zahl wollen: [0000 .. 9999] und erzeugt einen 15-stelligen alphanumerischen Ausgang.

Sie machen nicht klar, ob diese Funktion reversibel sein soll. Wenn Umkehrbarkeit nicht benötigt wird, wird eine Einweg-Hash-Funktion tun, was Sie wollen. 15 Hex-Zeichen sind 60 Bit oder 15 Base32-Zeichen sind 75 Bit. Verwenden Sie eine größere Hash-Funktion, trunkieren Sie und konvertieren Sie sie in hex oder Base32. Base32 bietet einen größeren Bereich von Ausgabezeichen als Hex.

Für die Umkehrbarkeit benötigen Sie eine Format Preserving Encryption, wobei die Ausgabegröße auf 60 oder 75 signifikante Bits beschränkt ist. Verwenden Sie für 60 Bits DES als Basisverschlüsselung, da es eine 64-Bit-Blockgröße hat. 75 Bits sind peinlicher. AES, mit 128 Bits, hat eine zu große Blockgröße, so dass Sie möglicherweise eine einfache 76-Bit-Feistel-Chiffre schreiben müssen. Das wird dir eine gute Dunkelheit geben, aber nur mittelmäßige Sicherheit. Sie sagen nicht, wie sicher diese Funktion sein muss.

+0

Hinweis von der Frage: "** Maximum ** kann 15 Längen der verschlüsselten Zeichenfolge haben" – zaph

+1

zu komplex zu verstehen, aber wir müssen in der Lage sein, umkehrbar –

1

Annahmen: "Integer maximal 6 Länge" bedeutet 6 numerische Zeichen 000000-999999.

Verschlüsseln Sie mit einem Algorithmus, der eine 8-Byte-Blockgröße und dann Base64-Codierung hat, die 12 Zeichen der Ausgabe produzieren wird.

Fügen Sie 2 zufällige Bytes zu den 6 Zeichen der Daten hinzu, um 8 Bytes zu machen, dies wird bis zu 2^16 oder 65536 unterschiedliche Ergebnisse bei der Verschlüsselung desselben Wertes verursachen. Verschlüsseln im ECB-Modus und Base64-Codierung. Das ergibt 12 Zeichen der Ausgabe.

Um die Eingabe wiederherzustellen decodieren Sie die Base64 verschlüsselt zu Daten, entschlüsseln und löschen Sie die 2 zufälligen Bytes.

Mögliche Verschlüsselungsalgorithmus gehören Blowfish, XTEA, DES und andere.

Hinweis: Für einen größeren Bereich verschiedener Ausgänge könnte die 6-stellige Zahl zuerst in eine binäre Darstellung von 3 Bytes konvertiert werden, was 5 zufällige Bytes erlaubt, die 2^40 verschiedene Ausgänge für denselben 6-stelligen Eingang erzeugen.

+0

ich habe meine Frage bearbeiten vielleicht können Sie einen Blick auf die Verschlüsselung zu bestimmen Methode, die ich verwenden sollte –