Wort in Binärdatei verschlüsseln
-
Wie findet ihr wenn ich das Wort "Werner" so in einer Binärdatei verschlüssle? Bzw. ich weiß nicht ob man das als verschlüsseln bezeichnen kann? Ich hab = NULL Ahnung vom Verschlüsseln, aber so kann ja eigentlich kein Fremder mehr draufkommen was es für ein Wort ist oder? Was ist eure Meinung dazu, auf was muss man achten?
#include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; short rnd(short a, short b); int main() { srand(time(0)); rand(); string user="Werner"; fstream file("H://test.into", ios::out | ios::binary); for(int signed i=0;i<user.length();i++) { if(!i % 2) { short var_a=user[i]*rnd(1,100); file.write(reinterpret_cast<char*>(&var_a),sizeof(var_a)); } else { int var_b=user[i]*rnd(1,100); file.write(reinterpret_cast<char*>(&var_b),sizeof(var_b)); } } return 0; } short rnd(short a, short b) { return ((a + rand()) % (b - a + 1)); }MfG
Stromberg
-
Eine Verschlüsselung sollte auch wieder rückgängig gemacht werden können. Da du deine Zufallszahlen aber nicht mit speicherst kannst du das aber nicht.
int ist intern zwar doppelt so groß, du nutzt das aber nicht aus, so dass die binäre Darstellung fast gleich aussieht, bis auf zwei zusätzliche 0-Bytes bei int.
Das könntest du vielleicht noch ändern.
-
Sollte nicht unbedingt. Einwegverschlüsselung ist wesentlich sicherer und für Passwörter komplett ausreichend.
EDIT: Natürlich gilt das nur, wenn bei erneuter Verschlüsselung das gleiche rauskommt...
-
Fellhuhn schrieb:
Sollte nicht unbedingt. Einwegverschlüsselung ist wesentlich sicherer und für Passwörter komplett ausreichend.
Schmeißt doch nicht immer die Begriffe so hin und her. Es gibt keine Einwegverschlüsselungen. Verschlüsselungen sind immer reversibel. Du sprichst von Hashes bzw. Prüfsummen, das ist zwar eine Art der Codierung, aber keine Verschlüsselung.
-
Einwegverschlüsselung ist schon der richtige Begriff. Oder eben im Englischen: one way encryption.
-
Fellhuhn schrieb:
Einwegverschlüsselung ist schon der richtige Begriff.
Nein, ist er nicht. Sowas gibt es einfach nicht, obwohl das immer wieder fälschlicherweise behauptet wird. Diese Begriffe sind mathematisch genau definiert. Und eine Verschlüsselung ist definiert als umkehrbare Funktion
.Wobei A1 das Eingangs- und A2 das Ausgangsalphabet und K das Schlüsselalphabet ist.
(Siehe z.B. auch hier.)
-
Und das Wort "Einweg" entfernt halt die Umkehrung aus der Definition der Verschlüsselung.
"Einweg" ist keine Erweiterung der Definition sondern eine Einschränkung. Es kann ja auch verschlüsselt werden. Nur eben nicht entschlüsselt.
-
mir scheint, dass das richtige fachvokabular hier kaum das problem ist. stromberg hat im prinzip einen stromchiffre geschrieben. sein schlüssel ist time(0). stromchiffre verwenden im allgemeinen aber xor und keine multiplikation, da sich mit xor die daten nicht vergrößern, die operation aber trotzdem rückgängig gemacht werden kann.
dass die methode mit rand() und time() sehr unsicher ist, brauchen wir sicher nicht zu diskutieren. der schlüsselraum ist minimal und rand() ist kein kryptographisch sicherer prng.ein einfacher tipp an stromberg: verwende md5, sha1, sha256 oder ripemd. das sind hashfunktionen. sie sind genau das, was du suchst. es gibt massenhaft code zu diesen algorithmen. man sollte sehr vorsichtig sein bei der verwendung eigener kryptographischer algorithmen.