Einfach verschlüsseln eines Strings in C
Ich versuche zu verschlüsseln, eine Abfrage auf ein Spiel, das ich mache, wenn das öffnen einer url. Es muss nicht kompliziert sein, in der Tat, da arbeite ich von eine Spiel-engine, die es braucht, um so einfach wie möglich. Es neigt dazu, zu viel Aufhebens, wenn ich zu low level.
Hab ich schon erstellt den query-string, ich muss einfach jeden char der es und subtrahieren Sie 15 von den char zu leicht verschlüsseln. Ich bin einfach nur wollen, um eine einfache Verschlüsselung, schreckte die meisten Benutzer.
Ich wünschte, ich könnte geben Sie ein code-Beispiel, aber ich bin nicht so erfahren in C, und ich bin mir auch nicht sicher, wo zu beginnen. Die Spiel-engine api in der Regel macht alles einfach für mich.
Zum Wohle der Armen Seelen, die ein Besuch dieser Frage auf der Suche nach eine einfache Möglichkeit zum verschlüsseln einer Zeichenfolge und versuchen, Sie zu kopieren und einfügen von code aus den Antworten nach dem Zufallsprinzip werde ich sprechen diese laut aus. die Kodierung nicht durch die Verschlüsselung. Obscurity ist keine Verschlüsselung. Einige der Antworten in dieser Frage nicht Verschlüsselung überhaupt. Vorsicht bitte.
InformationsquelleAutor Isaiah | 2011-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keine dieser Antworten wirklich als eine form der angemessenen Verschlüsselung.
Was Sie eigentlich tun wollen, ist irgendeine form der authentifizierte Verschlüsselung, und irgendeine form von secure-key-derivation-Algorithmus. Meine persönliche Empfehlung ist libsodium. Es bietet einen sehr guten Standard, und eine API, die relativ schwer zu bekommen ist falsch.
Gibt es verschiedene Möglichkeiten, dies zu tun:
Alle diese Möglichkeiten sind integriert in libsodium und umsetzbar sind, mit relativer Leichtigkeit.
Des folgenden code-Beispiele, die direkt aus dem libsodium Dokumentation.
1:
2: (die Ableitung eines Schlüssels aus einem Passwort)
Nun, der Schlüssel-array einen Schlüssel enthält, der geeignet ist für die Verwendung im code-Beispiel oben. Statt
randombytes_buf(key, sizeof key)
für die Erzeugung eines zufälligen Schlüssels, generierten wir einen abgeleiteten Schlüssel aus einem vom Benutzer angegebenen Passwort, und verwenden Sie diese für die Verschlüsselung.3 ist das "komplizierteste" der 3 Typen. Es ist, was Sie verwenden, wenn Sie zwei Parteien kommunizieren. Jede der Parteien erzeugt ein "Schlüsselpaar", das aus einem öffentlichen und einem geheimen Schlüssel. Mit diesen Schlüsselpaaren, können Sie gemeinsam vereinbaren, auf einem "shared key", die Sie verwenden können, für das verschlüsseln (und signieren) von Daten für jede andere:
Dieser code erzeugt zuerst die beiden Schlüsselpaare (in der Regel würde dies passieren, auf bob 's und alice' s Maschine getrennt, und Sie schickten sich gegenseitig Ihre öffentlichen - Taste, während Sie Ihre geheimen Schlüssel, gut, Geheimnis).
Dann eine zufällige nonce generiert, und der Aufruf
crypto_box_easy(...)
verschlüsselt eine Nachricht von alice zu bob (mit Bobs öffentlichen Schlüssel zu verschlüsseln, und alice den geheimen Schlüssel, um eine Signatur).Dann (nach möglicherweise senden die Nachricht über das Netzwerk), wird der Anruf zu
crypto_box_open_easy(...)
wird von bob zum entschlüsseln der Nachricht (mit seinem eigenen geheimen Schlüssel entschlüsseln, und Alices public-key zum verifizieren der Signatur). Wenn die überprüfung der Nachricht konnte aus irgendeinem Grund nicht (jemand versucht zu manipulieren), wird dies durch den return-code ungleich null.InformationsquelleAutor sonOfRa
Ihre "Tarnung" nicht täuschen niemanden.
Gibt es gute implementatons von bekannten und sicheren Verschlüsselungs-algorithmen, die online zur Verfügung stehen.
Beispiel: Twofish
Edit:
Beispiel für die Implementierung der XOR -:
Davon ausgegangen, dass das array mit den query-string 8 oder weniger bytes lang. Erhöhen Sie die Länge des
secret
um Ihre Bedürfnisse zu erfüllen.InformationsquelleAutor Dennis
Beachten Sie den Namen der Funktion. Was Sie tun möchten, ist dumm, und ziemlich wertlos.
Es spielt keine Rolle, für wie viele Sekunden der string zu sehen ist. Es ist egal, dass 99% der Leute werden es nicht bekommen. Es dauert nur 1 Benutzer zu versauen Ihr Anzeiger, nicht wahr?
Tun, was Sie wollen. Ich bin glücklich zu helfen, und Sie haben gewarnt worden. Tragen auf.
merkte, dass ich immer etwas zu verbessern gibt es später. Das Spiel ist nur alpha-Qualität jetzt sowieso, und meist will ich nur etwas, um das Anzeiger-code arbeiten. Wie mächtig ist die XOR Methode?
Nicht übermäßig sicher, aber infintely besser als rotierende vom 15. So stellen Sie sicher, XOR jedes Zeichen mit einem verschiedene Zahl sein oder er wird als unsicherer als das einfache rotation.
InformationsquelleAutor San Jacinto
Können Sie es mit einer sehr einfachen Funktion:
Es gibt auch eine einfache Verschlüsselungs-Algorithmus, die Sie interessieren können, es heißt XOR-Chiffre.
InformationsquelleAutor BlackBear
SonOfRa bereits vorgeschlagen, die die richtige Antwort.
Aber wenn Sie mit der Absicht, auf etwas schreckliches zu obskuren eine Zeichenkette ohne tatsächlich verschlüsseln es, die GNU C-Bibliothek bietet eine
memfrob(3)
, ist bereits geschrieben und leicht reversibel.InformationsquelleAutor sarnold
wenn Sie möchten, können Sie einfach xor der bytes
durch die Iteration über das array und mit ^=
dieser entschlüsselt und verschlüsselt
InformationsquelleAutor Screwballer
Können Sie eine Variante von base64 mit einer benutzerdefinierten alphabet, oder einfach nur ein alphabet gemischt. Es ist nicht wirklich sicher, aber in deinem Fall ist es wohl ausreichend. Der Algorithmus ist weit verbreitet, so wird es leicht für Sie zu finden, eine Implementierung, wo können Sie eine benutzerdefinierte alphabet.
Den bonus-Punkt ist, dass, was Sie in der Abfrage-string, die verschlüsselte form bestehen wird, gültige URL-Zeichen, wenn Sie das alphabet entsprechend.
google.com/search?q=base64+Implementierung+c. Die Implementierungen, die ich gesehen haben, sind ziemlich einfach zu verstehen.
Das problem mit der Verschleierung-masquerading-as-encryption ist, dass es gibt ein Falsches Gefühl der Sicherheit. Eines Tages wird jemand verlassen Sie sich auf einer 'sicheren' und wird etwas wichtiges über Sie.
InformationsquelleAutor Roland Illig