Bei einem gegebenen Eingabeelement (N Bytes) suche ich nach einer Funktion, die dies einer Ausgabe zuordnet (immer noch N Bytes). Die Funktion sollte folgende Eigenschaften haben:
- Es sollte 1: 1 sein, damit alle Eingaben einer Ausgabe zugeordnet werden und keine zwei Eingaben derselben Ausgabe zugeordnet werden.
- Bei einem Ausgabeelement sollte es schwierig sein, die Eingabe zu erraten, die zu dieser Ausgabe führt, selbst wenn die Zuordnung vollständig bekannt ist.
Existiert eine solche Funktion? Wo kann ich mehr lernen?
discrete-mathematics
cryptography
hash
JnBrymn
quelle
quelle
Antworten:
Dies ist als Einwegpermutation bekannt . Die "Permutation" bezieht sich auf die erste Ihrer beiden Anforderungen; Die "Einbahnstraße" bezieht sich auf die zweite Ihrer beiden Anforderungen. Es gibt verschiedene Kandidatenkonstruktionen für Einwegpermutationen, z. B. basierend auf dem Erhöhen eines RSA-Moduls oder anderer Schemata auf das dritte Leistungsmodul.
quelle
Vielleicht möchten Sie einen Blick auf DES oder AES werfen, sie tun genau das, was Sie wollen. Dies hängt von Methoden ab, die von einem Schlüssel abhängen, der den Klartext verschlüsselt / herunterfährt. Eine andere Methode ist die Verwendung von Doppelschlüsseln (öffentliche und private Schlüssel). Diese Methode wird heutzutage sehr häufig verwendet. Die beliebteste Methode ist RSA. Sie vertieft sich hauptsächlich darauf, einen öffentlichen Schlüssel zu haben, der jedem bekannt ist, und einen Ligusterschlüssel, den nur Sie selbst verwenden sollte es wissen. und wenn Sie jemandem etwas senden möchten, wird er es mit Ihrem öffentlichen Schlüssel verschlüsseln (beachten Sie, dass er es nicht mehr herabsetzen kann, da es nur durch Ihren privaten Schlüssel herabgesetzt wird). und wenn Sie eine Authentifizierung durchführen möchten, können Sie etwas senden, das mit Ihrem privaten Schlüssel verschlüsselt ist, und der Empfänger wird es durch Ihren öffentlichen Schlüssel so herabsetzen, dass er sicher ist, dass es von Ihnen gesendet wird.
Weitere Informationen finden Sie hier:
https://en.wikipedia.org/wiki/RSA_(cryptosystem)
quelle
Sie könnten dies versuchen:
Nehmen Sie zuerst den SHA-256 oder einen anderen Hash Ihres Eingabewerts. Verwenden Sie dann eine grundlegende Chiffre, so etwas wie die klassische A = C, B = D, C = E ...
Der Unterschied besteht darin, dass Sie den SHA-256 der gesamten Eingabezeichenfolge verwenden, um zu bestimmen, um wie viel verschoben wird (ist es A = B, A = C, A = D usw.)?
Hinweis: Ich bin kein Kryptografieexperte und nicht sicher, wie sicher dies wäre.
quelle