blowfish decryption ?
-
SeppJ schrieb:
meeydoo schrieb:
ich weiß nur das ich blowfish und cfb benutzen muss
aber einen key habe ich nicht !
Die Wunder der Cloud helfen! Du brauchst bloß eine verteilte Brute-Force Atacke programmieren (das ist recht einfach, wir können helfen). Dann mietest du die gesamten Weltressourcen an Computerzeit an. In 1000 bis 1000000 Jahren hast du deinen Klartext.
klingt gut, wann fangen wir an
?
nein ich habe in meinen unterlagen doch noch den key gefunden.
muss ich also doch noch was arbeiten.ps: ich hätte nicht gedacht der verschlüsselte key so sicher ist o.O
-
meeydoo schrieb:
ps: ich hätte nicht gedacht der verschlüsselte key so sicher ist o.O
Sonst wär's reichlich sinnlos, oder? Blowfish ist keine Kindergartenverschlüsselung.
-
gibt es keine c++ lib für blowfish? ich muss immer .h datein einfügen die von anderen c++ programmieren geschrieben worden sind.
ich bekomme es einfach nicht kompiliert#include "Blowfish.h" #include <iostream> #include <string> using namespace std; int main() { CBlowFish oBlowFish((unsigned char*)"1234567890123456", 16); char szDataIn[49] = "ababababccccccccababababccccccccababababcccccccc"; char szDataOut[49]; memset(szDataIn, 0, 49); memset(szDataOut, 0, 49); oBlowFish.ResetChain(); oBlowFish.Decrypt((unsigned char*)szDataOut, (unsigned char*)szDataIn, 48, CBlowFish::CFB); }
als erstes habe ich den fehler bekommen das im header size_t nicht definiert wurde, also habe ich mal gegoogled und cstring included und siehe da die meisten fehler meldungen sind weg.
doch nun bekomme ich folgende fehlermeldungen
Alle informationen habe ich von http://www.codeproject.com/KB/security/blowfish.aspx oder http://www.schneier.com/blowfish-download.htmlC:\Users\kanta\Desktop\Blowfish\ttest.o:ttest.cpp:(.text.startup+0x5f): undefined reference to `CBlowFish::CBlowFish(unsigned char*, unsigned int, SBlock const&)' C:\Users\kanta\Desktop\Blowfish\ttest.o:ttest.cpp:(.text.startup+0xb2): undefined reference to `CBlowFish::Decrypt(unsigned char const*, unsigned char*, unsigned int, int)'
das header file sieht so aus :
#include <cstring> #ifndef __BLOWFISH_H__ #define __BLOWFISH_H__ //Block Structure struct SBlock { //Constructors SBlock(unsigned int l=0, unsigned int r=0) : m_uil(l), m_uir(r) {} //Copy Constructor SBlock(const SBlock& roBlock) : m_uil(roBlock.m_uil), m_uir(roBlock.m_uir) {} SBlock& operator^=(SBlock& b) { m_uil ^= b.m_uil; m_uir ^= b.m_uir; return *this; } unsigned int m_uil, m_uir; }; class CBlowFish { public: enum { ECB=0, CBC=1, CFB=2 }; //Constructor - Initialize the P and S boxes for a given Key CBlowFish(unsigned char* ucKey, size_t n, const SBlock& roChain = SBlock(0UL,0UL)); //Resetting the chaining block void ResetChain() { m_oChain = m_oChain0; } // Encrypt/Decrypt Buffer in Place void Encrypt(unsigned char* buf, size_t n, int iMode=ECB); void Decrypt(unsigned char* buf, size_t n, int iMode=ECB); // Encrypt/Decrypt from Input Buffer to Output Buffer void Encrypt(const unsigned char* in, unsigned char* out, size_t n, int iMode=ECB); void Decrypt(const unsigned char* in, unsigned char* out, size_t n, int iMode=ECB); //Private Functions private: unsigned int F(unsigned int ui); void Encrypt(SBlock&); void Decrypt(SBlock&); private: //The Initialization Vector, by default {0, 0} SBlock m_oChain0; SBlock m_oChain; unsigned int m_auiP[18]; unsigned int m_auiS[4][256]; static const unsigned int scm_auiInitP[18]; static const unsigned int scm_auiInitS[4][256]; }; //Extract low order byte inline unsigned char Byte(unsigned int ui) { return (unsigned char)(ui & 0xff); } //Function F inline unsigned int CBlowFish::F(unsigned int ui) { return ((m_auiS[0][Byte(ui>>24)] + m_auiS[1][Byte(ui>>16)]) ^ m_auiS[2][Byte(ui>>8)]) + m_auiS[3][Byte(ui)]; } #endif // __BLOWFISH_H__
-
meeydoo schrieb:
C:\Users\kanta\Desktop\Blowfish\ttest.o:ttest.cpp:(.text.startup+0x5f): undefined reference to `CBlowFish::CBlowFish(unsigned char*, unsigned int, SBlock const&)' C:\Users\kanta\Desktop\Blowfish\ttest.o:ttest.cpp:(.text.startup+0xb2): undefined reference to `CBlowFish::Decrypt(unsigned char const*, unsigned char*, unsigned int, int)'
Ähh, ne Blowfish.cpp gibts bei dir?! Oder wo stehen die Definitionen?
-
ah okay lol im beispiel programm wurde die .cpp datei garnicht included
ja jetzt macht es schon mehr sinn
trotzdem meckert er noch über die keylength, aber das bekomme ich bestimmt noch irgentwie alleine hin
danke!
-
meeydoo schrieb:
ah okay lol im beispiel programm wurde die .cpp datei garnicht included
Das macht man auch nicht. Die sollst Du nämlich separat kompilieren und dazu "linken" -- nicht inkludieren!
Dir scheinen wirklich wichtige Grundlagen zu fehlen. Lern Doch erstmal C++. Solche Basics hier runtergebetet zu bekommen, kannst Du nicht erwarten, da so'was immer viel besser in schlauen Büchern erklärt steht. Es ist Deine Aufgabe, Dich erst mal selbst mit diesen Grundlagen zu beschäftigen.
-
ja ich bin immernoch die basics am lesen. ich dachte nur das ich mal irgentwas praktisches nebenbei mache, leider hatte ich das kapitel linker etc noch nicht. vieleicht werde ich mal ein paar kapitel überspringen
-
----------
-
okay ich weiß nun wie ich dateien linke.
allerdings habe ich eine bitteauf der seite
http://www.codeproject.com/KB/security/blowfish.aspx
gibt es "beispiele" könnt ihr diese kompilieren? ich bekomme soviele fehlermeldungen das ich garnicht weiß wo ich anfangen soll.
bzw habt ihr vielleicht eine quelle wo ich kompilierbare beispiele herbekomme ? suche schon seit tagen, leider ohne erfolg.
-
meeydoo schrieb:
gibt es "beispiele" könnt ihr diese kompilieren?
Ich mag nicht extra einen Account dafür anlegen.
ich bekomme soviele fehlermeldungen das ich garnicht weiß wo ich anfangen soll.
Wenn ich mal raten darf, dann würde ich sagen, dass du nicht in der Lage bist, diese (unvollständigen) Codebeispiele zu einem vollständigen Programm zu ergänzen.
Bevor man Fremdbibliotheken benutzen kann, muss man erst einmal die Grundlagen beherrschen.
-
SeppJ schrieb:
meeydoo schrieb:
gibt es "beispiele" könnt ihr diese kompilieren?
Ich mag nicht extra einen Account dafür anlegen.
ich bekomme soviele fehlermeldungen das ich garnicht weiß wo ich anfangen soll.
Wenn ich mal raten darf, dann würde ich sagen, dass du nicht in der Lage bist, diese (unvollständigen) Codebeispiele zu einem vollständigen Programm zu ergänzen.
Bevor man Fremdbibliotheken benutzen kann, muss man erst einmal die Grundlagen beherrschen.
wahrscheinlich hast du recht, ich dachte nur das es ein vollständiges beispiel ist, was aber wohl nicht der fall ist
-
meeydoo schrieb:
wahrscheinlich hast du recht, ich dachte nur das es ein vollständiges beispiel ist, was aber wohl nicht der fall ist
Soweit ich das sehe, ist es auch vollständig für jede vernünftige Definition von vollständig. Aber dies gilt nicht mehr, falls man nicht in der Lage ist, das Basis-Drumherum wie eine main-Funktion und passende Header zu ergänzen und noch damit kämpft, wie man überhaupt mit mehreren Dateien umgeht.
Tut mir leid, dass ich dir ohne die Bibliothek selber nicht konkreter helfen kann.
-
SeppJ schrieb:
meeydoo schrieb:
wahrscheinlich hast du recht, ich dachte nur das es ein vollständiges beispiel ist, was aber wohl nicht der fall ist
Soweit ich das sehe, ist es auch vollständig für jede vernünftige Definition von vollständig. Aber dies gilt nicht mehr, falls man nicht in der Lage ist, das Basis-Drumherum wie eine main-Funktion und passende Header zu ergänzen und noch damit kämpft, wie man überhaupt mit mehreren Dateien umgeht.
Tut mir leid, dass ich dir ohne die Bibliothek selber nicht konkreter helfen kann.
kein problem, ich werde mich die tage mal intensiver mit blowfish auseinander setzen. vielleicht bekomme ich es ja alleine hin.
-
meeydoo schrieb:
kein problem, ich werde mich die tage mal intensiver mit blowfish auseinander setzen. vielleicht bekomme ich es ja alleine hin.
Eben nicht. Da hilft es dir gar nichts, mit Blowfish umzugehen. Du bist einfach noch nicht so weit, selbstständig fremde Bibliotheken zu benutzen und Beispiele zu verstehen. Einfach nur Copy&Paste&Abändern reicht beim Programmieren nicht.
-
okay, dann habe ich noch eine letzte frage.
ich linke die blowfish.cpp und .h datei und include die .h datei in meine main.cpp
meine maincpp sieht so aus
#include <iostream> #include "Blowfish.h" using namespace std; int main() { }
müsste es nicht kompilierbar sein? oder könnte ich selbst da einen fehler gemacht haben ?
-
Das sollte compilierbar sein. Ist es das nicht?
-
nein alleine die blowfish.cpp lässt sich nicht kompilieren. das ist ja mein problem
Compiling: BlowFish.cpp C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp: In constructor 'CBlowFish::CBlowFish(unsigned char*, size_t, const SBlock&)': C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:294:41: error: 'exception' was not declared in this scope C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:294:41: note: suggested alternative: c:\program files (x86)\codeblocks\gcc\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/exception:61:9: note: 'std::exception' C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:319:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:315:8: warning: unused variable 'iVal' [-Wunused-variable] C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp: In member function 'void CBlowFish::Encrypt(unsigned char*, size_t, int)': C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:436:44: error: 'exception' was not declared in this scope C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:436:44: note: suggested alternative: c:\program files (x86)\codeblocks\gcc\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/exception:61:9: note: 'std::exception' C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp: In member function 'void CBlowFish::Decrypt(unsigned char*, size_t, int)': C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:479:44: error: 'exception' was not declared in this scope C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:479:44: note: suggested alternative: c:\program files (x86)\codeblocks\gcc\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/exception:61:9: note: 'std::exception' C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp: In member function 'void CBlowFish::Encrypt(const unsigned char*, unsigned char*, size_t, int)': C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:524:44: error: 'exception' was not declared in this scope C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:524:44: note: suggested alternative: c:\program files (x86)\codeblocks\gcc\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/exception:61:9: note: 'std::exception' C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp: In member function 'void CBlowFish::Decrypt(const unsigned char*, unsigned char*, size_t, int)': C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:567:44: error: 'exception' was not declared in this scope C:\Users\kanta\Desktop\testestest\TEST\BlowFish.cpp:567:44: note: suggested alternative: c:\program files (x86)\codeblocks\gcc\bin\../lib/gcc/i686-pc-mingw32/4.6.1/../../../../include/c++/4.6.1/exception:61:9: note: 'std::exception'
er beschwert sich über die class exception
#include <exception>vielleicht habe ich ein problem mit meinem compiler. ich benutze momentan 4.6.1 gcc. den brauche ich leider für die lambda funktion in meinem vorherigen programm.
-
Ahhh, das ist was anderes. Das ist ein Problem mit der Bibliothek selber. Der Code ist von 2001, da war der Standard noch frisch und Compiler ließen noch vieles durchgehen, was eigentlich nicht legal war. Ich habe gerade gesehen, dass man den Code auch ohne einloggen auf der Seite bekommen kann, daher kann ich dir nun konkreter helfen:
Mach mal unter den Includes in der Blowfish.cpp einusing namespace std;
. Das#include <exception>
ersetzt du durch#include <stdexcept>
. Und alle Vorkommen von exception ersetzt du durch eine passende Standardexception,domain_error
klingt passend für diese Fälle. Die Test.cpp die bei der Bibliothek dabei ist, hat auch noch mehrere Fehler, aber mach erst einmal das was ich geschrieben habe, dann sollte dein Testprogramm übersetzbar sein.
-
SeppJ schrieb:
Ahhh, das ist was anderes. Das ist ein Problem mit der Bibliothek selber. Der Code ist von 2001, da war der Standard noch frisch und Compiler ließen noch vieles durchgehen, was eigentlich nicht legal war. Ich habe gerade gesehen, dass man den Code auch ohne einloggen auf der Seite bekommen kann, daher kann ich dir nun konkreter helfen:
Mach mal unter den Includes in der Blowfish.cpp einusing namespace std;
. Das#include <exception>
ersetzt du durch#include <stdexcept>
. Und alle Vorkommen von exception ersetzt du durch eine passende Standardexception,domain_error
klingt passend für diese Fälle. Die Test.cpp die bei der Bibliothek dabei ist, hat auch noch mehrere Fehler, aber mach erst einmal das was ich geschrieben habe, dann sollte dein Testprogramm übersetzbar sein.super vielen dank! ich weiß garnicht was ich sagen soll,
ja void main und fehlende includes in der testdatei haben mich sehr verwirrt. wenigstens kann ich jetzt kompilieren, dh ich werde bestimmt bald ein fertiges programm haben!
danke
-
nice ich habe es schon hinbekommen