Zufällige zahl mit bit-beschränkung
-
hallo.
für einen sicherheitsalgorithmus brauche ich eine zufallszahl, die eine bestimmte größe maximal haben darf, also beispielsweise 512 bit.
Wie kann ich dies möglichst effizient lösen ( die funktion wird sehr oft aufgerufen werden.)
ich dachte an ein array aus (zufällig gewählten) 1 und 0en, welches ich auf die gewählte bitzahl beschränke und dann in einen int umforme.doch: ist das effizient oder gibt es noch bessere lösungen für ein solches problem?
viele grüße
-
http://www.cplusplus.com/reference/stl/bitset/
Wäre ein passender Container dazu. Obwohl,wenn du beschränkst ein Array auch recht gut geht.
Aber ich frage mich, was du mit einer 512 Bit Zahl anfangen willst. In einen int bringst du die nicht. (int hat (meist) 32 Bit).
-
hallo
ja ich weiß, dass das wohl kaum noch in einen int reinpassen wird^^
ich wollte damit eine verschlüsslung schreiben. netzwerkübertragung. datenversand nur über verschlüsslung. da dachte ich, je höher, desto besser.
natürlich lasse ich mich gern eines besseren belehren^^
grüße
-
just-another-programmer schrieb:
hallo
ja ich weiß, dass das wohl kaum noch in einen int reinpassen wird^^
ich wollte damit eine verschlüsslung schreiben. netzwerkübertragung. datenversand nur über verschlüsslung. da dachte ich, je höher, desto besser.
natürlich lasse ich mich gern eines besseren belehren^^
grüße
Also wenn du das zum lernen/ausprobieren machst, bastle ein wenig damit rum. Wenn du es wirklich sicher haben willst, nimm eine fertige lib.

-
drakon schrieb:
Wenn du es wirklich sicher haben willst, nimm eine fertige lib.

wie zum beispiel? :>
-
Hier:
int main () { srand(time(0)); const size_t keySize = 100000; std::vector<char> key(keySize); for(size_t i = 0; i<keySize; i++) { key[i]=rand()%255; } std::string text="bal text zum verschicken..."; std::vector<char> crypted(text.length()); size_t k = 0; for(size_t i = 0; i<text.length(); i++) { crypted[i]=text[i]^key[k++]; k%=keySize; } return 0; }Kann keiner entschlüsseln, musst nur den Schlüssel sicher übertragen.
-
just-another-programmer schrieb:
drakon schrieb:
Wenn du es wirklich sicher haben willst, nimm eine fertige lib.

wie zum beispiel? :>
der klassiker: libcrypt (http://sourceforge.net/projects/libcrypt/ )
-

-
gute Kryptobibliothek in C++ ist die crypto++
Ist stark Template basierend, sind natürlich auch entsprechende Zufallszahlengeneratoren implementiert wie z.B. der BBS (Blum-Blum-Shub) und viele mehr