<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[blowfish ver-&#x2F;entschlüsseln]]></title><description><![CDATA[<p>ich bin auf der Suche nach einem Tutorial oder Codeschnippsel wie man einen String mit blowfish ver-/entschlüsselt, im speziellen geht es um Nachrichten in IRC die mittels FiSH oder mircryption verschlüsselt wurden.<br />
Über google habe ich zwar das eine oder andere Bespiel gefunden, doch da werden long Werte verlangt.</p>
<p>Am liebsten wäre mir zwei einfach Funktionen, die ich in mein Project einbinden kann. Wenn jemand etwas hat oder sich damit schon auseinander gesetzt hat, wäre ich über Infos sehr dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172716/blowfish-ver-entschlüsseln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 06:47:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172716.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Feb 2007 17:41:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Wed, 07 Feb 2007 17:41:45 GMT]]></title><description><![CDATA[<p>ich bin auf der Suche nach einem Tutorial oder Codeschnippsel wie man einen String mit blowfish ver-/entschlüsselt, im speziellen geht es um Nachrichten in IRC die mittels FiSH oder mircryption verschlüsselt wurden.<br />
Über google habe ich zwar das eine oder andere Bespiel gefunden, doch da werden long Werte verlangt.</p>
<p>Am liebsten wäre mir zwei einfach Funktionen, die ich in mein Project einbinden kann. Wenn jemand etwas hat oder sich damit schon auseinander gesetzt hat, wäre ich über Infos sehr dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224606</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Wed, 07 Feb 2007 17:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Wed, 07 Feb 2007 17:58:43 GMT]]></title><description><![CDATA[<p><a href="http://www.schneier.com/code/bfsh-unk.zip" rel="nofollow">http://www.schneier.com/code/bfsh-unk.zip</a></p>
<p>Das einfach einbinden, den Rest dürfte man erkennen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224619</guid><dc:creator><![CDATA[Kopfgeldjaeger]]></dc:creator><pubDate>Wed, 07 Feb 2007 17:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Wed, 07 Feb 2007 18:19:20 GMT]]></title><description><![CDATA[<p>Das einbinden dürfte ich schon hin bekommen, allerdings happerts dann ein bischen an der Umsetzung und dem Aufruf.<br />
Den Sourcecode hatte ich auch schon in der Hand, allerdings bekomm ich ja nicht immer Strings wo die Länge durch 8 teilbar ist, was ist dann zu tun? Restlicher Speicher mit 0en füllen?<br />
Bin noch eher der Anfänger in C deswegen wäre ein Beispiel schon recht nützlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224633</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Wed, 07 Feb 2007 18:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Wed, 07 Feb 2007 23:01:59 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=1819" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=5" rel="nofollow">Linux/Unix</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=8" rel="nofollow">Rund um die Programmierung</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224793</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 07 Feb 2007 23:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Thu, 08 Feb 2007 10:02:43 GMT]]></title><description><![CDATA[<p>yesar schrieb:</p>
<blockquote>
<p>Das einbinden dürfte ich schon hin bekommen, allerdings happerts dann ein bischen an der Umsetzung und dem Aufruf.<br />
Den Sourcecode hatte ich auch schon in der Hand, allerdings bekomm ich ja nicht immer Strings wo die Länge durch 8 teilbar ist, was ist dann zu tun? Restlicher Speicher mit 0en füllen?<br />
Bin noch eher der Anfänger in C deswegen wäre ein Beispiel schon recht nützlich.</p>
</blockquote>
<p>Hi,</p>
<p>das hat eiugentlich nichts mit dem Programmieren (oder gar der Sprache) zu tun, sondern hier benötigst Du <a href="http://en.wikipedia.org/wiki/Padding_%28cryptography%29" rel="nofollow">Padding</a>.</p>
<p>Prinzipiell gibt es verschiedene Verfahren und gehört ebenso wie der Algorithmus (hier blowfish) und der <a href="http://de.wikipedia.org/wiki/Data_Encryption_Standard#Betriebsmodi" rel="nofollow">Betriebsmodus</a> zum Protokoll, auf das sich die Kommunikationspartner einigen müssen.</p>
<p>Beim Padding sind die beiden wohl berühmtesten Vertreter das &quot;ZeroPadding&quot; (einfach Nullen + 1 (Halb-)Byte Länge der Paddingdaten anhängen [ &quot;Simon\x00\x00\x02&quot; ] ) und das Randompadding (genauso aber mit Zufallszahlen statt Nullen).<br />
Bei &quot;Klartext&quot; braucht man bisweilen nicht einmal die Länge ...<br />
Aber da gibt es noch viiiel mehr (z.B. ISO9796-2).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224928</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 08 Feb 2007 10:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Thu, 08 Feb 2007 13:51:28 GMT]]></title><description><![CDATA[<p>Das klingt ja schon mal ganz interessant.<br />
Hoffe das klingt jetzt nicht zu &quot;primitiv&quot; aber ich suche nur ein Beispiel, wie ich blowfish benutzen kann und nicht alle Details. Wie gesagt, ich möchte einen String ver- bzw entschlüsseln mit blowfish.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225057</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Thu, 08 Feb 2007 13:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Thu, 08 Feb 2007 23:38:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>eigentlich wollte ich den Code noch auf meiner Homepage veröffentlichen, aber ich stell den erstmal hier rein:</p>
<p>Erstmal brauchst du natürlich die nötigen Funktionsdefinitionen der Blowfish - Verschlüsselung damit du diese zum Ver und - entschlüsseln verwenden kannst. Das heist im Klartext, der Code des Blowfish ist in eine Header und C++ Datei verpackt. Diesen Code kannst du dann in dein Projekt einbinden, und dann die benötigten Verschlüsselungsfunktionen anwenden.</p>
<p>Hier erstmal der erste Codeteil des Blowfish's, es ist ein Header:</p>
<pre><code class="language-cpp">#ifndef __BLOWFISH_H__
#define __BLOWFISH_H__

struct SBlock
{
	SBlock(unsigned int l=0, unsigned int r=0) : m_uil(l), m_uir(r) {}
	SBlock(const SBlock&amp; roBlock) : m_uil(roBlock.m_uil), m_uir(roBlock.m_uir) {}
	SBlock&amp; operator^=(SBlock&amp; 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 };
	CBlowFish(unsigned char* ucKey, size_t n, const SBlock&amp; roChain = SBlock(0UL,0UL));
	void ResetChain() { m_oChain = m_oChain0; }
	void Encrypt(unsigned char* buf, size_t n, int iMode=ECB);
	void Decrypt(unsigned char* buf, size_t n, int iMode=ECB);
	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:
	unsigned int F(unsigned int ui);
	void Encrypt(SBlock&amp;);
	void Decrypt(SBlock&amp;);

private:
	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];
};

inline unsigned char Byte(unsigned int ui)
{
	return (unsigned char)(ui &amp; 0xff);
}

inline unsigned int CBlowFish::F(unsigned int ui)
{
	return ((m_auiS[0][Byte(ui&gt;&gt;24)] + m_auiS[1][Byte(ui&gt;&gt;16)]) ^ m_auiS[2][Byte(ui&gt;&gt;8)]) + m_auiS[3][Byte(ui)];
}

#endif
</code></pre>
<p>Nun kommt die C++ Datei:</p>
<pre><code>////////////////////////////////////////////////////////////////////////////
///
// BlowFish.cpp
//
//    Implementation of Bruce Schneier's BLOWFISH algorithm from &quot;Applied 
//    Cryptography&quot;, Second Edition.

#include &lt;cstring&gt;
#include &lt;exception&gt;
#include &quot;Blowfish.h&quot;

//Initialization with a fixed string which consists of the hexadecimal digits of PI (less the initial 3)
//P-array, 18 32-bit subkeys
const unsigned int CBlowFish::scm_auiInitP[18] = {
	0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
	0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
	0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
	0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
	0x9216d5d9, 0x8979fb1b
};

//Four 32-bit S-boxes with 256 entries each
const unsigned int CBlowFish::scm_auiInitS[4][256] = {
	//0
	{0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
	 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
	 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
	 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
	 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
	 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
	 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
	 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
	 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
	 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
	 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
	 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
	 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
	 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
	 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
	 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
	 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
	 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
	 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
	 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
	 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
	 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
	 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
	 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
	 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
	 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
	 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
	 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
	 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
	 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
	 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
	 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
	 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
	 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
	 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
	 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
	 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
	 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
	 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
	 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
	 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
	 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
	 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
	 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
	 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
	 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
	 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
	 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
	 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
	 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
	 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
	 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
	 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
	 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
	 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
	 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
	 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
	 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
	 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
	 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
	 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
	 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
	 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
	 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a},

	//1
	{0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
	 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
	 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
	 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
	 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
	 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
	 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
	 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
	 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
	 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
	 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
	 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
	 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
	 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
	 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
	 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
	 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
	 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
	 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
	 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
	 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
	 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
	 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
	 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
	 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
	 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
	 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
	 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
	 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
	 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
	 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
	 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
	 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
	 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
	 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
	 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
	 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
	 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
	 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
	 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
	 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
	 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
	 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
	 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
	 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
	 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
	 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
	 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
	 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
	 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
	 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
	 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
	 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
	 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
	 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
	 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
	 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
	 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
	 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
	 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
	 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
	 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
	 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
	 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7},

	//2
	{0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
	 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
	 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
	 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
	 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
	 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
	 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
	 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
	 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
	 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
	 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
	 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
	 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
	 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
	 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
	 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
	 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
	 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
	 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
	 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
	 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
	 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
	 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
	 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
	 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
	 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
	 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
	 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
	 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
	 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
	 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
	 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
	 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
	 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
	 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
	 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
	 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
	 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
	 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
	 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
	 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
	 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
	 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
	 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
	 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
	 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
	 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
	 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
	 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
	 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
	 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
	 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
	 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
	 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
	 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
	 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
	 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
	 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
	 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
	 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
	 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
	 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
	 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
	 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0},

	//3
	{0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
	 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
	 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
	 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
	 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
	 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
	 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
	 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
	 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
	 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
	 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
	 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
	 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
	 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
	 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
	 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
	 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
	 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
	 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
	 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
	 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
	 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
	 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
	 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
	 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
	 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
	 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
	 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
	 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
	 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
	 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
	 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
	 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
	 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
	 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
	 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
	 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
	 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
	 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
	 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
	 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
	 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
	 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
	 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
	 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
	 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
	 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
	 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
	 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
	 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
	 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
	 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
	 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
	 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
	 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
	 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
	 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
	 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
	 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
	 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
	 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
	 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
	 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
	 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}
};

//Constructor - Initialize the P and S boxes for a given Key
CBlowFish::CBlowFish(unsigned char* ucKey, size_t keysize, const SBlock&amp; roChain) : m_oChain0(roChain), m_oChain(roChain)
{
	if(keysize&lt;1)
		throw (&quot;Incorrect key length&quot;);
	//Check the Key - the key length should be between 1 and 56 bytes
	if(keysize&gt;56)
		keysize = 56;
	unsigned char aucLocalKey[56];
	unsigned int i, j;
	memcpy(aucLocalKey, ucKey, keysize);
	//Reflexive Initialization of the Blowfish.
	//Generating the Subkeys from the Key flood P and S boxes with PI
	memcpy(m_auiP, scm_auiInitP, sizeof m_auiP);
	memcpy(m_auiS, scm_auiInitS, sizeof m_auiS);
	//Load P boxes with key bytes
	const unsigned char* p = aucLocalKey;
	unsigned int x=0;
	//Repeatedly cycle through the key bits until the entire P array has been XORed with key bits
	int iCount = 0;
	for(i=0; i&lt;18; i++)
	{
		x=0;
		for(int n=4; n--; )
		{
			int iVal = (int)(*p);
			x &lt;&lt;= 8;
			x |= *(p++);
			iCount++;
			if(iCount == keysize)
			{
				//All bytes used, so recycle bytes 
				iCount = 0;
				p = aucLocalKey;
			}
		}
		m_auiP[i] ^= x;
	}
	//Reflect P and S boxes through the evolving Blowfish
	SBlock block(0UL,0UL); //all-zero block
	for(i=0; i&lt;18; )
		Encrypt(block), m_auiP[i++] = block.m_uil, m_auiP[i++] = block.m_uir;
	for(j=0; j&lt;4; j++)
		for(int k=0; k&lt;256; )
			Encrypt(block), m_auiS[j][k++] = block.m_uil, m_auiS[j][k++] = block.m_uir;
}

//Sixteen Round Encipher of Block
void CBlowFish::Encrypt(SBlock&amp; block)
{
	unsigned int uiLeft = block.m_uil;
	unsigned int uiRight = block.m_uir;
	uiLeft ^= m_auiP[0];
	uiRight ^= F(uiLeft)^m_auiP[1]; uiLeft ^= F(uiRight)^m_auiP[2];
	uiRight ^= F(uiLeft)^m_auiP[3]; uiLeft ^= F(uiRight)^m_auiP[4];
	uiRight ^= F(uiLeft)^m_auiP[5]; uiLeft ^= F(uiRight)^m_auiP[6];
	uiRight ^= F(uiLeft)^m_auiP[7]; uiLeft ^= F(uiRight)^m_auiP[8];
	uiRight ^= F(uiLeft)^m_auiP[9]; uiLeft ^= F(uiRight)^m_auiP[10];
	uiRight ^= F(uiLeft)^m_auiP[11]; uiLeft ^= F(uiRight)^m_auiP[12];
	uiRight ^= F(uiLeft)^m_auiP[13]; uiLeft ^= F(uiRight)^m_auiP[14];
	uiRight ^= F(uiLeft)^m_auiP[15]; uiLeft ^= F(uiRight)^m_auiP[16];
	uiRight ^= m_auiP[17];
	block.m_uil = uiRight;
	block.m_uir = uiLeft;
}

//Sixteen Round Decipher of SBlock
void CBlowFish::Decrypt(SBlock&amp; block)
{
	unsigned int uiLeft = block.m_uil;
	unsigned int uiRight = block.m_uir;
	uiLeft ^= m_auiP[17];
	uiRight ^= F(uiLeft)^m_auiP[16]; uiLeft ^= F(uiRight)^m_auiP[15];
	uiRight ^= F(uiLeft)^m_auiP[14]; uiLeft ^= F(uiRight)^m_auiP[13];
	uiRight ^= F(uiLeft)^m_auiP[12]; uiLeft ^= F(uiRight)^m_auiP[11];
	uiRight ^= F(uiLeft)^m_auiP[10]; uiLeft ^= F(uiRight)^m_auiP[9];
	uiRight ^= F(uiLeft)^m_auiP[8]; uiLeft ^= F(uiRight)^m_auiP[7];
	uiRight ^= F(uiLeft)^m_auiP[6]; uiLeft ^= F(uiRight)^m_auiP[5];
	uiRight ^= F(uiLeft)^m_auiP[4]; uiLeft ^= F(uiRight)^m_auiP[3];
	uiRight ^= F(uiLeft)^m_auiP[2]; uiLeft ^= F(uiRight)^m_auiP[1];
	uiRight ^= m_auiP[0];
	block.m_uil = uiRight;
	block.m_uir = uiLeft;
}

//Semi-Portable Byte Shuffling
inline void BytesToBlock(unsigned char const* p, SBlock&amp; b)
{
	unsigned int y;
	//Left
	b.m_uil = 0;
	y = *p++;
	y &lt;&lt;= 24;
	b.m_uil |= y;
	y = *p++;
	y &lt;&lt;= 16;
	b.m_uil |= y;
	y = *p++;
	y &lt;&lt;= 8;
	b.m_uil |= y;
	y = *p++;
	b.m_uil |= y;
	//Right
	b.m_uir = 0;
	y = *p++;
	y &lt;&lt;= 24;
	b.m_uir |= y;
	y = *p++;
	y &lt;&lt;= 16;
	b.m_uir |= y;
	y = *p++;
	y &lt;&lt;= 8;
	b.m_uir |= y;
	y = *p++;
	b.m_uir |= y;
}

inline void BlockToBytes(SBlock const&amp; b, unsigned char* p)
{
	unsigned int y;
	//Right
	y = b.m_uir;
	*--p = Byte(y);
	y = b.m_uir &gt;&gt; 8;
	*--p = Byte(y);
	y = b.m_uir &gt;&gt; 16;
	*--p = Byte(y);
	y = b.m_uir &gt;&gt; 24;
	*--p = Byte(y);
	//Left
	y = b.m_uil;
	*--p = Byte(y);
	y = b.m_uil &gt;&gt; 8;
	*--p = Byte(y);
	y = b.m_uil &gt;&gt; 16;
	*--p = Byte(y);
	y = b.m_uil &gt;&gt; 24;
	*--p = Byte(y);
}

//Encrypt Buffer in Place
//Returns false if n is multiple of 8
void CBlowFish::Encrypt(unsigned char* buf, size_t n, int iMode)
{
	//Check the buffer's length - should be &gt; 0 and multiple of 8
	if((n==0)||(n%8!=0))
		throw (&quot;Incorrect buffer length&quot;);
	SBlock work;
	if(iMode == CBC) //CBC mode, using the Chain
	{
		SBlock chain(m_oChain);
		for(; n &gt;= 8; n -= 8)
		{
			BytesToBlock(buf, work);
			work ^= chain;
			Encrypt(work);
			chain = work;
			BlockToBytes(work, buf+=8);
		}
	}
	else if(iMode == CFB) //CFB mode, using the Chain
	{
		SBlock chain(m_oChain);
		for(; n &gt;= 8; n -= 8)
		{
			Encrypt(chain);
			BytesToBlock(buf, work);
			work ^= chain;
			chain = work;
			BlockToBytes(work, buf+=8);
		}
	}
	else //ECB mode, not using the Chain
	{
		for(; n &gt;= 8; n -= 8)
		{
			BytesToBlock(buf, work);
			Encrypt(work);
			BlockToBytes(work, buf+=8);
		}
	}
}

//Decrypt Buffer in Place
//Returns false if n is multiple of 8
void CBlowFish::Decrypt(unsigned char* buf, size_t n, int iMode)
{
	//Check the buffer's length - should be &gt; 0 and multiple of 8
	if((n==0)||(n%8!=0))
		throw (&quot;Incorrect buffer length&quot;);
	SBlock work;
	if(iMode == CBC) //CBC mode, using the Chain
	{
		SBlock crypt, chain(m_oChain);
		for(; n &gt;= 8; n -= 8)
		{
			BytesToBlock(buf, work);
			crypt = work;
			Decrypt(work);
			work ^= chain;
			chain = crypt;
			BlockToBytes(work, buf+=8);
		}
	}
	else if(iMode == CFB) //CFB mode, using the Chain, not using Decrypt()
	{
		SBlock crypt, chain(m_oChain);
		for(; n &gt;= 8; n -= 8)
		{
			BytesToBlock(buf, work);
			Encrypt(chain);
			crypt = work;
			work ^= chain;
			chain = crypt;
			BlockToBytes(work, buf+=8);
		}
	}
	else //ECB mode, not using the Chain
	{
		for(; n &gt;= 8; n -= 8)
		{
			BytesToBlock(buf, work);
			Decrypt(work);
			BlockToBytes(work, buf+=8);
		}
	}
}

//Encrypt from Input Buffer to Output Buffer
//Returns false if n is multiple of 8
void CBlowFish::Encrypt(const unsigned char* in, unsigned char* out, size_t n, int iMode)
{
	//Check the buffer's length - should be &gt; 0 and multiple of 8
	if((n==0)||(n%8!=0))
		throw (&quot;Incorrect buffer length&quot;);
	SBlock work;
	if(iMode == CBC) //CBC mode, using the Chain
	{
		SBlock chain(m_oChain);
		for(; n &gt;= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			work ^= chain;
			Encrypt(work);
			chain = work;
			BlockToBytes(work, out+=8);
		}
	}
	else if(iMode == CFB) //CFB mode, using the Chain
	{
		SBlock chain(m_oChain);
		for(; n &gt;= 8; n -= 8, in += 8)
		{
			Encrypt(chain);
			BytesToBlock(in, work);
			work ^= chain;
			chain = work;
			BlockToBytes(work, out+=8);
		}
	}
	else //ECB mode, not using the Chain
	{
		for(; n &gt;= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			Encrypt(work);
			BlockToBytes(work, out+=8);
		}
	}
}

//Decrypt from Input Buffer to Output Buffer
//Returns false if n is multiple of 8
void CBlowFish::Decrypt(const unsigned char* in, unsigned char* out, size_t n, int iMode)
{
	//Check the buffer's length - should be &gt; 0 and multiple of 8
	if((n==0)||(n%8!=0))
		throw (&quot;Incorrect buffer length&quot;);
	SBlock work;
	if(iMode == CBC) //CBC mode, using the Chain
	{
		SBlock crypt, chain(m_oChain);
		for(; n &gt;= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			crypt = work;
			Decrypt(work);
			work ^= chain;
			chain = crypt;
			BlockToBytes(work, out+=8);
		}
	}
	else if(iMode == CFB) //CFB mode, using the Chain, not using Decrypt()
	{
		SBlock crypt, chain(m_oChain);
		for(; n &gt;= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			Encrypt(chain);
			crypt = work;
			work ^= chain;
			chain = crypt;
			BlockToBytes(work, out+=8);
		}
	}
	else //ECB mode, not using the Chain
	{
		for(; n &gt;= 8; n -= 8, in += 8)
		{
			BytesToBlock(in, work);
			Decrypt(work);
			BlockToBytes(work, out+=8);
		}
	}
}
</code></pre>
<p>Jetzt kannst du die Funktionen anwenden, hier ein kleiner Beispielcode, er ist schön kommentiert:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &quot;blowfish.h&quot;

using namespace std;

int main(int argc, char *argv[])
{
  //Initialisierung (key, keylänge)
  CBlowFish BlowFish((unsigned char*)&quot;cplusplus&quot;, 9);
  //Zu verschlüsselnder string
  string pwd = &quot;mikey&quot;;
  //Schlüssellänge auf 16 Byte festlegen
  int keysize=16;
  //Verschlüsselten string anlegen 
  string cryptpwd;
  //und Platz für 16 Byte (keysize) reservieren
  cryptpwd.resize(keysize);
  //Verschlüsseln
  BlowFish.Encrypt((unsigned char*)pwd.c_str(), (unsigned char*)cryptpwd.c_str(), keysize); 
  //Verschlüsselten string ausgeben
  cout &lt;&lt; cryptpwd;
  //Jetzt fürs Beispiel das gegebene Passwort löschen
  pwd.clear();
  //und die Länge des entschlüsselten Passwortes (pwd) reservieren.
  pwd.resize(6);
  //Entschlüsseln
  BlowFish.Decrypt((unsigned char*)cryptpwd.c_str(), (unsigned char*)pwd.c_str(), keysize);
  //Entschlüsselten string ausgeben
  cout &lt;&lt; endl &lt;&lt; pwd &lt;&lt; endl;
  getchar ();
  return EXIT_SUCCESS;
}
</code></pre>
<p>Ich hoffe, ich konnte dir damit weiterhelfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>MfG mikey.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225410</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Thu, 08 Feb 2007 23:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 11:04:14 GMT]]></title><description><![CDATA[<p>Das sieht sehr gut aus, sowas habe ich gesucht. Ich bin zwar grade in der Arbeit aber ich werde mir heute Abend nochmal den Code zuhause anschauen und probieren. Vielen Dank für deine Mühe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225599</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Fri, 09 Feb 2007 11:04:14 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 12:36:35 GMT]]></title><description><![CDATA[<p>ich habe das eben ausprobiert und bekommen einen Haufen an Fehlern... ist der Code für Windows oder für Linux?<br />
Zur Übersetzung habe ich</p>
<pre><code>gcc -o blowfish_test blowfish_test.cpp
</code></pre>
<p>genommen und dabei kommen diese Fehler:</p>
<pre><code>/tmp/ccbiesVs.o: In function `std::__verify_grouping(char const*, unsigned int, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)':
blowfish_test.cpp:(.text+0xd): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::size() const'
blowfish_test.cpp:(.text+0x60): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::operator[](unsigned int) const'
blowfish_test.cpp:(.text+0x9d): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::operator[](unsigned int) const'
blowfish_test.cpp:(.text+0xc8): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::operator[](unsigned int) const'
/tmp/ccbiesVs.o: In function `main':
blowfish_test.cpp:(.text+0x148): undefined reference to `CBlowFish::CBlowFish(unsigned char*, unsigned int, SBlock const&amp;)'
blowfish_test.cpp:(.text+0x15d): undefined reference to `std::allocator&lt;char&gt;::allocator()'
blowfish_test.cpp:(.text+0x178): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string(char const*, std::allocator&lt;char&gt; const&amp;)'
blowfish_test.cpp:(.text+0x198): undefined reference to `std::allocator&lt;char&gt;::~allocator()'
blowfish_test.cpp:(.text+0x1be): undefined reference to `std::allocator&lt;char&gt;::~allocator()'
blowfish_test.cpp:(.text+0x1da): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string()'
blowfish_test.cpp:(.text+0x1f2): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::resize(unsigned int)'
blowfish_test.cpp:(.text+0x20f): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::c_str() const'
blowfish_test.cpp:(.text+0x222): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::c_str() const'
blowfish_test.cpp:(.text+0x232): undefined reference to `CBlowFish::Encrypt(unsigned char const*, unsigned char*, unsigned int, int)'
blowfish_test.cpp:(.text+0x244): undefined reference to `std::cout'
blowfish_test.cpp:(.text+0x249): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::operator&lt;&lt; &lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)'
blowfish_test.cpp:(.text+0x25b): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::clear()'
blowfish_test.cpp:(.text+0x26f): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::resize(unsigned int)'
blowfish_test.cpp:(.text+0x28c): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::c_str() const'
blowfish_test.cpp:(.text+0x29f): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::c_str() const'
blowfish_test.cpp:(.text+0x2af): undefined reference to `CBlowFish::Decrypt(unsigned char const*, unsigned char*, unsigned int, int)'
blowfish_test.cpp:(.text+0x2ba): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::endl&lt;char, std::char_traits&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)'
blowfish_test.cpp:(.text+0x2cc): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::endl&lt;char, std::char_traits&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)'
blowfish_test.cpp:(.text+0x2d1): undefined reference to `std::cout'
blowfish_test.cpp:(.text+0x2d6): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; (*)(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;))'
blowfish_test.cpp:(.text+0x2df): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::operator&lt;&lt; &lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)'
blowfish_test.cpp:(.text+0x2e8): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; (*)(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;))'
blowfish_test.cpp:(.text+0x2ff): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::~basic_string()'
blowfish_test.cpp:(.text+0x311): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::~basic_string()'
blowfish_test.cpp:(.text+0x33b): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::~basic_string()'
blowfish_test.cpp:(.text+0x361): undefined reference to `std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::~basic_string()'
/tmp/ccbiesVs.o: In function `__static_initialization_and_destruction_0(int, int)':
blowfish_test.cpp:(.text+0x3a6): undefined reference to `std::ios_base::Init::Init()'
/tmp/ccbiesVs.o: In function `__tcf_0':
blowfish_test.cpp:(.text+0x3d5): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccbiesVs.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1225654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225654</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Fri, 09 Feb 2007 12:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 13:03:48 GMT]]></title><description><![CDATA[<p>Das sind ein paar harmlose Linkererrors. Der Code muss auch unter Linux funktionieren, da nicht auf betriebssystemspezifische Funktionen zurückgegriffen wird. Ich arbeite unter Windows und habe den Code erfolgreich mit Dev - C++ kompilieren können, aber nur als Projekt. Dazu habe ich ein paar Fragen an dich:</p>
<p>- Unter welchem OS arbeitest du (wenn überhaupt)<br />
- Welche IDE benutzt du ? (Ich glaube mal Linux ?)</p>
<p>Bei dir sind es nur ein paar Einstellungsfehler, ansonsten sehe ich keine sonstigen Fehlermeldungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225672</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 13:26:35 GMT]]></title><description><![CDATA[<p>also ich benutze gar keine IDE sondern schreibe die Sachen in der Console. Das OS is gentoo Linux</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225687</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 13:32:07 GMT]]></title><description><![CDATA[<p>Uff, warum nimmst du keine IDE ?</p>
<p>Sorry, aber damit habe ich zu wenig Erfahrung, bzw. garkeine. Linux dürfte dabei keine Rolle spielen, aber die Funktionensdefinitionen müssen dem Linker bekannt gemacht werden. Wie das in der Konsole geht weis ich leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Warte mal ein paar Stunden ab, bestimmt hilft dir da jemand weiter.</p>
<p>MfG mikey.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225693</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 13:34:45 GMT]]></title><description><![CDATA[<p>yesar schrieb:</p>
<blockquote>
<p>also ich benutze gar keine IDE sondern schreibe die Sachen in der Console. Das OS is gentoo Linux</p>
</blockquote>
<p>Nimm den g++, der linkt die C++ Standard Bibliothek gleich mit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225699</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Fri, 09 Feb 2007 13:34:45 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 14:18:27 GMT]]></title><description><![CDATA[<p>Na da hast du doch schon eine Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich hoffe es gelingt dir !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225724</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Fri, 09 Feb 2007 14:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to blowfish ver-&#x2F;entschlüsseln on Fri, 09 Feb 2007 18:54:59 GMT]]></title><description><![CDATA[<p>Super, hat geklappt! Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225860</guid><dc:creator><![CDATA[yesar]]></dc:creator><pubDate>Fri, 09 Feb 2007 18:54:59 GMT</pubDate></item></channel></rss>