NULL enthaltende Char* kopieren
-
Gegensprechanlage schrieb:
Hacker schrieb:
Was spricht gegen ein paar geile STL-Container?
"geil"
Mööp Mööp, STL rockt

Oder das ist Geschmackssache - ich find auch nicht alles gut.
-
Hmm über einen Vector hatte ich nachgedacht, aber ich weiß nicht wie man den Inhalt in eine Datei schreiben könnte...
Das ganze soll die Endstufe einer Verschlüsselung werden.
Die einzelnen Blöcke (immer multiple von 64-Bit) sollen aneinander gehängt und weggeschrieben werden.
-
Xenogenesis schrieb:
Hmm über einen Vector hatte ich nachgedacht, aber ich weiß nicht wie man den Inhalt in eine Datei schreiben könnte...
Mit &v[0] oder v.data()? Welchen Algorithmus implementierste denn? AES?
-
*KMT
AUTSCH ok da hätte ich wirklich dran denken sollen^^
Danke für das Öffnen meines geistigen Auges
Ne nicht AES, ist eine Eigenentwicklung die ich seit fast einem Jahr plane und nun endlich Implementiere
Vielen Dank euch allen

-
Xenogenesis schrieb:
Ne nicht AES, ist eine Eigenentwicklung die ich seit fast einem Jahr plane und nun endlich Implementiere
Interessant. Ich hoffe du weist entweder was du da tust (irgendwie bezweifel ich das :)), oder du willst den nicht in irgendetwas Sicherheitsrelevantem einsetzen?
-
cooky451 schrieb:
Xenogenesis schrieb:
Hmm über einen Vector hatte ich nachgedacht, aber ich weiß nicht wie man den Inhalt in eine Datei schreiben könnte...
Mit &v[0] oder v.data()?
Bitte was? C++11? Oder seit wann hat std::vector eine solche Member-Funktion?
-
Hacker schrieb:
C++11?
Wie man auch in jeder Referenz nachgucken könnte..
-
Hacker schrieb:
cooky451 schrieb:
Xenogenesis schrieb:
Hmm über einen Vector hatte ich nachgedacht, aber ich weiß nicht wie man den Inhalt in eine Datei schreiben könnte...
Mit &v[0] oder v.data()?
Bitte was? C++11? Oder seit wann hat std::vector eine solche Member-Funktion?
c++11
-
@Xenogenesis
std::vector<char> wie schon vorgeschlagen wurde ist sicher die bessere Wahl.Ansonsten... was spricht gegen memcpy() und selber mitzählen?
-
unskilled schrieb:
Hacker schrieb:
cooky451 schrieb:
Xenogenesis schrieb:
Hmm über einen Vector hatte ich nachgedacht, aber ich weiß nicht wie man den Inhalt in eine Datei schreiben könnte...
Mit &v[0] oder v.data()?
Bitte was? C++11? Oder seit wann hat std::vector eine solche Member-Funktion?
c++11
cooky451 schrieb:
Hacker schrieb:
C++11?
Wie man auch in jeder Referenz nachgucken könnte..
Bei meiner Lieblingsreferenz gab es keine solche Member-Methode. Ich werde jetzt für die nächste Zeit wohl zu cppreference wechseln müssen... ist aktueller.
-
Ja mit dem Vector funktioniert es dann auch

Also sagen wir so, das ganze kommt in mehreren Applikationen und auch Projekten anderer zum Einsatz.
-
Was spricht gegen etwas wie AES, das auch sicher funktioniert?
Wie ist dein Background in Zahlentheorie etc? Kannst du formell die Sicherheit deines Algorithmus beweisen?
-
Xenogenesis schrieb:
char* buffer = new char[n]; char* abc = new char[y]; for(int i = 0; i < x; i++){ abc = FUNKTION(); strcat(buffer, abc); }Das ist echt wenig an Code. Wie sieht FUNCTION aus? Warum reservierst du per new[] Speicher und überschreibst den Zeiger später mit "abc="? Warum überhaupt new[]?
Tipp: Wenn du glaubst, new[] und delete[] benutzen zu müssen, liegst du sehr wahrscheinlich falsch.
#include <iterator> #include <vector> #include <iostream> template<class OutputIterator> void func(OutputIterator oi) { *oi++ = 'W'; *oi++ = 'T'; *oi++ = 'F'; *oi++ = '?'; *oi++ = '!'; } int main() { using namespace std; vector<char> buffer; for(int i = 0; i < 5; i++) { func(back_inserter(buffer)); } buffer.push_back('\0'); cout << &buffer[0] << endl; }
-
Ethon schrieb:
Was spricht gegen etwas wie AES, das auch sicher funktioniert?
Wie ist dein Background in Zahlentheorie etc? Kannst du formell die Sicherheit deines Algorithmus beweisen?AES ist aber keine Vollbitverschlüsselung!

-
Xenogenesis schrieb:
char* buffer = new char[n];hustbaer schrieb:
std::vector<char> wie schon vorgeschlagen wurde ist sicher die bessere Wahl.
Ich will nicht kleinlich sein. Aber sollten binäre Daten nicht in
unsigned chars dargestellt werden?
-
pumuckl schrieb:
Ich will nicht kleinlich sein. Aber sollten binäre Daten nicht in
unsigned chars dargestellt werden?Sollten - ist aber ziemlich unüblich. Siehe z.B. ifstream::read, memcpy, etc.
-
pumuckl schrieb:
Ich will nicht kleinlich sein. Aber sollten binäre Daten nicht in
unsigned chars dargestellt werden?Warum?
-
_cu schrieb:
AES ist aber keine Vollbitverschlüsselung!

Du meinst sowas hier: http://www.kryptochef.de/ ? lol
Ja, irgendwie ist die URL zensiert.
-
pumuckl schrieb:
Ich will nicht kleinlich sein. Aber sollten binäre Daten nicht in
unsigned chars dargestellt werden?Jepp, wenn ich binär I/O mache, dann verwende ich irgendwo auch unsigned char und irgendwoanders wird ge
reinterpret_castet. Ich verlass mich einfach darauf, dass das alles klappt und dass, falls die Maschine negative Ganzzahlen nicht per 2er-Komplement darstellt,charwenigstens vorzeichenlos ist, damit all die Bitmuster legal und einen einzigartigen char-Wert ergeben (also ohne die Problematik +/-0). Ich glaube nicht, dass eine solche Garantie direkt im C++ Standard gemacht wird, aber ich kann mir nicht vorstellen, wie man sonst vernünftig per char arbeiten können sollte, wenn man sich nicht mindestens auf eins von beiden (2er-komplement und/oder char ist vorzeichenlos) verlassen kann. Vielleicht folgt diese Garantie auch indirekt aus anderen Bedingungen ... denn es gibt z.b. die Garantie, dass ich einen POD so kopieren kann:POD x = ...; POD y; { char const* p = reinterpret_cast<char*>(&x); char * q = reinterpret_cast<char*>(&y); for (int i=0; i<sizeof(y); ++i) { q[i] = p[i]; } }und ich sehe nicht, wie das vernünftig funktionieren sollte, falls char sowohl vorzeichenbehaftet als auch so etwas wie sign+magnitude oder 1er-komplement verwendet. Da würde ja irgendwie Information verloren gehen, weil zwei verschiedene Bitmuster für die Null verwendet werden, also einmal +0 und einmal -0.
-
krümelkacker schrieb:
Da würde ja irgendwie Information verloren gehen, weil zwei verschiedene Bitmuster für die Null verwendet werden, also einmal +0 und einmal -0.
Solange die Repräsentation des Wertes beim Kopieren erhalten bleibt, sehe ich kein Problem? Wie ist das nochmal bei Gleitkommazahlen, eine negative 0 bleibt dort doch auch beim Kopieren erhalten, oder?