<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Blowfish</id>
	<title>Blowfish - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Blowfish"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Blowfish&amp;action=history"/>
	<updated>2026-06-09T05:26:33Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Blowfish&amp;diff=85433&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Blowfish&amp;diff=85433&amp;oldid=prev"/>
		<updated>2025-08-04T17:42:18Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Blockchiffre&lt;br /&gt;
| name           = Blowfish&lt;br /&gt;
| bild           = Blowfish structure.svg|lang=de&lt;br /&gt;
| bildname       = Feistelnetzwerk von Blowfish&lt;br /&gt;
| entwickler     = [[Bruce Schneier]]&lt;br /&gt;
| datum          = 1993&lt;br /&gt;
| schlüssellänge = 32–448 Bit (Standard 128 Bit)&lt;br /&gt;
| blockgröße     = 64 Bit&lt;br /&gt;
| struktur       = [[Feistelchiffre]]&lt;br /&gt;
| runden         = 16&lt;br /&gt;
| kryptoanalyse  = &amp;lt;div style=&amp;quot;text-align:left&amp;quot;&amp;gt;&lt;br /&gt;
* vier Runden von Blowfish sind anfällig für eine [[Differentielle Kryptoanalyse]]&lt;br /&gt;
* 14 Runden sind, für eine Klasse von schwachen Schlüsseln, anfällig für eine [[Zufällige Permutation|Pseudozufalls-Permutation]]&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Blowfish&amp;#039;&amp;#039;&amp;#039; ({{deS|[[Kugelfisch]]}}) ist ein symmetrischer [[Blockverschlüsselung]]salgorithmus, der 1993 von [[Bruce Schneier]] entworfen und erstmals im April 1994 in &amp;#039;&amp;#039;[[Dr.&amp;amp;nbsp;Dobb’s Journal]]&amp;#039;&amp;#039; publiziert wurde. Er wurde [[Gemeinfreiheit|gemeinfrei]] veröffentlicht und nicht patentiert.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.schneier.com/academic/blowfish/ |titel=Schneier on Security: The Blowfish Encryption Algorithm |zugriff=2018-02-23}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Blowfish hat eine feste Blocklänge von 64&amp;amp;nbsp;[[Bit]], basiert auf einem [[Feistelnetzwerk]] und besitzt schlüsselabhängige [[S-Box]]en. Die [[Schlüssellänge]] kann 32&amp;amp;nbsp;Bit bis 448&amp;amp;nbsp;Bit betragen. Aus diesen Schlüsselbits werden vor Beginn der Ver- oder Entschlüsselung die so genannten Rundenschlüssel P&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; bis P&amp;lt;sub&amp;gt;18&amp;lt;/sub&amp;gt; und die Einträge in den S-Boxen erzeugt, insgesamt 4168&amp;amp;nbsp;Byte.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
Die Abbildung zeigt den internen Aufbau von Blowfish. Der 64&amp;amp;nbsp;Bit breite Klartextblock wird in zwei Hälften &amp;lt;math&amp;gt;L_1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; geteilt. In jeder sogenannten Runde, von denen insgesamt 16 durchlaufen werden, wird die linke Hälfte des Datenblocks mit einem vorab berechneten 32&amp;amp;nbsp;Bit breiten Rundenschlüssel P&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; bis P&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt; [[XOR-Verknüpfung|XOR]]-verknüpft, dann das Ergebnis in die Rundenfunktion &amp;#039;&amp;#039;F&amp;#039;&amp;#039; eingegeben und deren Ausgabe mit der rechten Hälfte XOR-verknüpft und die Hälften anschließend vertauscht. Am Ende werden noch die beiden Hälften mit den Rundenschlüsseln P&amp;lt;sub&amp;gt;17&amp;lt;/sub&amp;gt; und P&amp;lt;sub&amp;gt;18&amp;lt;/sub&amp;gt; XOR-verknüpft:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; R_{i+1} = L_i \oplus P_i,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; L_{i+1} = R_i \oplus F(R_{i+1}) \quad (i \; \text{von} \; 1 \; \text{bis} \; 16)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; R_{18} = L_{17} \oplus P_{17}, \; L_{18} = R_{17} \oplus P_{18}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{18}&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;R_{18}&amp;lt;/math&amp;gt; bilden dann den Schlüsseltextblock. Die Entschlüsselung läuft exakt gleich ab, nur werden dabei alle Rundenschlüssel P&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; bis P&amp;lt;sub&amp;gt;18&amp;lt;/sub&amp;gt; in umgekehrter Reihenfolge verwendet. Das beruht auf der Vertauschbarkeit der XOR-Verknüpfungen. XOR ist sowohl [[Kommutativgesetz|kommutativ]] als auch [[Assoziativgesetz|assoziativ]]. Es ist gleich, ob man eine Hälfte des Datenblocks erst mit einem Rundenschlüssel und dann mit der Ausgabe der Funktion &amp;#039;&amp;#039;F&amp;#039;&amp;#039; verknüpft oder umgekehrt.&lt;br /&gt;
&lt;br /&gt;
In der Funktion &amp;#039;&amp;#039;F&amp;#039;&amp;#039; kommen die schlüsselabhängigen S-Boxen zum Einsatz. Der Eingabewert wird in vier Byte geteilt, mit denen jeweils ein Wert aus einer von vier 8&amp;amp;nbsp;×&amp;amp;nbsp;32 Bit S-Boxen ausgelesen wird. Diese Werte werden mittels XOR und Addition modulo &amp;lt;math&amp;gt;2^{32}&amp;lt;/math&amp;gt; verknüpft:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--:&amp;lt;math&amp;gt; F(x) = \lbrace \lbrack \, S_1(\lfloor x / 2^{24} \rfloor) \; + \; S_2(\lfloor x / 2^{16} \rfloor \, \bmod \, 2^8) \, \rbrack \; \oplus \; S_3(\lfloor x / 2^8 \rfloor \, \bmod \, 2^8) \, \rbrace \; + \; S_4(x \, \bmod \, 2^8)&amp;lt;/math&amp;gt;.--&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; F(x) = \lbrace \lbrack \, S_1(x_{24..31}) \; + \; S_2(x_{16..23}) \, \rbrack \; \oplus \; S_3(x_{8..15}) \, \rbrace \; + \; S_4(x_{0..7})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dabei steht &amp;lt;math&amp;gt;x_{a..b}\!\,&amp;lt;/math&amp;gt; für die Bits an den Positionen &amp;#039;&amp;#039;a&amp;#039;&amp;#039; bis &amp;#039;&amp;#039;b&amp;#039;&amp;#039; aus der Binärdarstellung des Wertes &amp;#039;&amp;#039;x&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Schlüsseleinteilung ===&lt;br /&gt;
Blowfish verwendet 18&amp;amp;nbsp;Rundenschlüssel &amp;lt;math&amp;gt;P_1&amp;lt;/math&amp;gt; bis &amp;lt;math&amp;gt;P_{18}&amp;lt;/math&amp;gt; mit je 32&amp;amp;nbsp;Bit und vier S-Boxen mit je 256 = 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; Einträgen von je 32&amp;amp;nbsp;Bit. Die Initialisierung der &amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt; und der S-Boxen erfolgt mit einer fixen Zahlenfolge, die aus der Binärdarstellung der [[Kreiszahl|Kreiszahl π]] abgeleitet wird, um die Anforderungen an eine [[unverdächtige Konstante]] zu erfüllen. Die Nachkommastellen von π sind [[Pseudozufall|pseudozufällig]] und unabhängig vom restlichen Blowfish-Algorithmus.&amp;lt;ref&amp;gt;{{Literatur|Autor=Bruce Schneier| Titel=Description of a new variable-length key, 64-bit block cipher (Blowfish)| Sammelwerk=FSE 1993| Reihe=Lecture Notes in Computer Science| Band=809| Verlag=Springer| Jahr=1994| Seiten=201| Online=[https://www.schneier.com/paper-blowfish-fse.html schneier.com]}} {{Zitat|Sprache=en|I chose the digits of pi as the initial subkey table for two reasons: because it is a random sequence not related to the algorithm, and because it could either be stored as part of the algorithm or derived when needed. |Übersetzung= Ich habe die Ziffern von Pi als Initialisierung der Unterschlüssel aus zwei Gründen gewählt: weil es eine zufällige Folge ohne Bezug zum Algorithmus ist, und weil sie entweder als Teil des Algorithmus gespeichert, oder bei Bedarf berechnet werden kann. }}&amp;lt;/ref&amp;gt; Davon ausgehend werden sowohl die Rundenschlüssel als auch die S-Boxen S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; bis S&amp;lt;sub&amp;gt;4&amp;lt;/sub&amp;gt; schlüsselabhängig verändert.&lt;br /&gt;
&lt;br /&gt;
Dazu wird zuerst der Schlüssel in 32-Bit-Blöcke aufgeteilt. Danach wird jeder Rundenschlüssel mit den 32-Bit-Blöcken des Schlüssels XOR-verknüpft. Dabei wechseln sich die Blöcke des Schlüssels nacheinander ab. Danach wird ein Block mit 64&amp;amp;nbsp;Nullbits verschlüsselt, unter Verwendung der aktuellen Rundenschlüssel und der wie oben initialisierten S-Boxen. Die linke und rechte Hälfte des entstandenen Schlüsseltextes ersetzen dann den ersten und zweiten Rundenschlüssel. Dann wird der obige Schlüsseltext mit den geänderten Rundenschlüsseln nochmals verschlüsselt, und der dritte und vierte Rundenschlüssel wird ersetzt usw. Nachdem auf diese Weise alle Rundenschlüssel ersetzt wurden, kommen die Einträge der S-Boxen an die Reihe, wobei auch wieder die jeweils nächste Verschlüsselung mit dem aktuellen Stand der S-Boxen gemacht wird. Es werden also insgesamt 521&amp;amp;nbsp;Verschlüsselungen durchgeführt, bis die 18&amp;amp;nbsp;Rundenschlüssel und die 1024&amp;amp;nbsp;S-Box-Einträge ersetzt sind.&lt;br /&gt;
&lt;br /&gt;
Danach bleiben die Rundenschlüssel und die Werte in den S-Boxen so lange konstant, bis ein neuer Schlüssel gewählt wird.&lt;br /&gt;
&lt;br /&gt;
Als [[C++]]-Code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
 uint32_t P[18];       // Rundenschlüssel&lt;br /&gt;
 uint32_t S[4][0x100]; // S-Boxen&lt;br /&gt;
&lt;br /&gt;
 uint32_t f (uint32_t x) {&lt;br /&gt;
    uint32_t h = S[0][x &amp;gt;&amp;gt; 24] + S[1][x &amp;gt;&amp;gt; 16 &amp;amp; 0xff];&lt;br /&gt;
    return ( h ^ S[2][x &amp;gt;&amp;gt; 8 &amp;amp; 0xff] ) + S[3][x &amp;amp; 0xff];&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void encrypt (uint32_t &amp;amp; L, uint32_t &amp;amp; R) {&lt;br /&gt;
    for (int i=0 ; i&amp;lt;16 ; i += 2) {&lt;br /&gt;
       L ^= P[i];&lt;br /&gt;
       R ^= f(L);&lt;br /&gt;
       R ^= P[i+1];&lt;br /&gt;
       L ^= f(R);&lt;br /&gt;
    }&lt;br /&gt;
    L ^= P[16];&lt;br /&gt;
    R ^= P[17];&lt;br /&gt;
    swap (L, R);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void decrypt (uint32_t &amp;amp; L, uint32_t &amp;amp; R) {&lt;br /&gt;
    for (int i=16 ; i &amp;gt; 0 ; i −= 2) {&lt;br /&gt;
       L ^= P[i+1];&lt;br /&gt;
       R ^= f(L);&lt;br /&gt;
       R ^= P[i];&lt;br /&gt;
       L ^= f(R);&lt;br /&gt;
    }&lt;br /&gt;
    L ^= P[1];&lt;br /&gt;
    R ^= P[0];&lt;br /&gt;
    swap (L, R);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void key_schedule (uint8_t key[], int keylen) {&lt;br /&gt;
    // ...&lt;br /&gt;
    // Initialisiere P[] und S[][] mittels der Kreiszahl Pi; hier ausgelassen&lt;br /&gt;
    // Es ist zu beachten, dass Pi in big-endian Reihenfolge eingelesen wird&lt;br /&gt;
    // ...&lt;br /&gt;
    int i;&lt;br /&gt;
    int j=0;&lt;br /&gt;
    int k;&lt;br /&gt;
    for (i=0 ; i&amp;lt;18 ; ++i)&lt;br /&gt;
    {&lt;br /&gt;
      /* Der Schlüssel wird byteweise gelesen, und */&lt;br /&gt;
      /* in big-endian Reihenfolge mit P[] verrechnet */&lt;br /&gt;
      uint32_t tmp = 0;&lt;br /&gt;
      for (k=0 ; k&amp;lt;4 ; k++)&lt;br /&gt;
      {&lt;br /&gt;
        tmp = tmp &amp;lt;&amp;lt; 8 | key[j];&lt;br /&gt;
        if(++j &amp;gt;= keylen) j=0;&lt;br /&gt;
      }&lt;br /&gt;
      P[i] ^= tmp;&lt;br /&gt;
    }&lt;br /&gt;
    uint32_t L = 0, R = 0;&lt;br /&gt;
    for (i=0 ; i&amp;lt;18 ; i+=2) {&lt;br /&gt;
      encrypt (L, R);&lt;br /&gt;
      P[i] = L; P[i+1] = R;&lt;br /&gt;
    }&lt;br /&gt;
    for (i=0 ; i&amp;lt;4 ; ++i)&lt;br /&gt;
      for (j=0 ; j&amp;lt;0x100 ; j+=2) {&lt;br /&gt;
         encrypt (L, R);&lt;br /&gt;
         S[i][j] = L; S[i][j+1] = R;&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kryptoanalyse und Sicherheit ==&lt;br /&gt;
Es ist kein effizienter Angriff auf die Blowfish-Verschlüsselung mit voller Rundenzahl bekannt. Ein so genannter Sign-Extension-Bug wurde in einer Veröffentlichung des C-Codes gefunden.&amp;lt;ref&amp;gt;Mike Morgan: [https://www.schneier.com/blowfish-bug.txt &amp;#039;&amp;#039;Blowfish can be cracked! (Fix included…)&amp;#039;&amp;#039;.] Newsgroup sci.crypt&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Serge Vaudenay fand 1996 einen [[Kryptoanalyse#Angriffsszenarien|Known-Plaintext-Angriff]], der zum Brechen der Verschlüsselung 2&amp;lt;sup&amp;gt;8&amp;#039;&amp;#039;r&amp;#039;&amp;#039; + 1&amp;lt;/sup&amp;gt; bekannte Paare von Klartext und Schlüsseltext benötigt. Der Parameter &amp;#039;&amp;#039;r&amp;#039;&amp;#039; bezeichnet die Anzahl der Runden. Zudem entdeckte er eine Klasse von schwachen Schlüsseln, die erkannt und mit nur 2&amp;lt;sup&amp;gt;4&amp;#039;&amp;#039;r&amp;#039;&amp;#039; + 1&amp;lt;/sup&amp;gt; Klartext-Paaren gebrochen werden können. Dieser Angriff kann jedoch nicht gegen regulären Blowfish eingesetzt werden, da er die Kenntnis der schlüsselabhängigen S-Boxen voraussetzt.&lt;br /&gt;
&lt;br /&gt;
[[Vincent Rijmen]] stellt in seiner Doktorarbeit einen differenziellen Angriff zweiter Ordnung vor, der Blowfish mit höchstens 4 Runden brechen kann. Außer der [[Brute-Force-Methode]] ist kein Weg bekannt, den Algorithmus mit 16 Runden zu brechen.&amp;lt;ref name=&amp;quot;vaudenay-weak-keys&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
|url= http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Vau96a&lt;br /&gt;
|title= On the Weak Keys of Blowfish&lt;br /&gt;
|accessdate= 2007-12-31&lt;br /&gt;
|last= Vaudenay&lt;br /&gt;
|first= Serge&lt;br /&gt;
|date= 2006-08-23&lt;br /&gt;
|work= &lt;br /&gt;
|pages= &lt;br /&gt;
|doi= &lt;br /&gt;
|quote= &lt;br /&gt;
|format= [[PostScript]]&lt;br /&gt;
|language= en&lt;br /&gt;
|archiveurl= https://web.archive.org/web/20071104154101/http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Vau96a&lt;br /&gt;
|archivedate= 2007-11-04&lt;br /&gt;
|offline= yes&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bruce Schneier]] merkt an, dass er den neueren [[Twofish]]-Algorithmus empfiehlt, obwohl Blowfish noch in breiter Verwendung ist.&amp;lt;ref name=&amp;quot;schneier-interview-dec-2007&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
 |url         = http://www.computerworld.com.au/index.php/id;1891124482;pp;1;fp;4194304;fpid;1&lt;br /&gt;
 |title       = Bruce Almighty: Schneier preaches security to Linux faithful&lt;br /&gt;
 |accessdate  = 2007-12-31&lt;br /&gt;
 |language    = en&lt;br /&gt;
 |last        = McConnachie&lt;br /&gt;
 |first       = Dahna&lt;br /&gt;
 |date        = 2007-12-27&lt;br /&gt;
 |work        = Computerworld&lt;br /&gt;
 |pages       = 3&lt;br /&gt;
 |doi         = &lt;br /&gt;
 |quote       = At this point, though, I’m amazed it’s still being used. If people ask, I recommend Twofish instead.&lt;br /&gt;
 |offline     = yes&lt;br /&gt;
 |archiveurl  = https://web.archive.org/web/20081005014100/http://www.computerworld.com.au/index.php/id;1891124482;pp;1;fp;4194304;fpid;1&lt;br /&gt;
 |archivedate = 2008-10-05&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da Blowfish eine Blockgröße von 64 Bit verwendet (AES verwendet 128 Bit Blöcke), ist ein [[Geburtstagsangriff]] – vor allem im [[HTTPS]]- oder [[OpenVPN]]-Kontext – möglich. Im Jahr 2016 zeigte der SWEET32-Angriff, wie ein Geburtstagsangriff genutzt werden kann, um den Klartext wiederherzustellen. Der SWEET32-Angriff funktioniert bei Verschlüsselungsverfahren wie Blowfish, die mit einer Blockgröße von 64 Bit arbeiten.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
| url=https://sweet32.info/&lt;br /&gt;
| title=On the Practical (In-)Security of 64-bit Block Ciphers – Collision Attacks on HTTP over TLS and OpenVPN&lt;br /&gt;
| author=Karthikeyan Bhargavan, Gaëtan Leurent&lt;br /&gt;
| date=2016-08&lt;br /&gt;
| language=en&lt;br /&gt;
| publisher=ACM CCS 2016}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Im [[GNU Privacy Guard]] sind Blowfish und [[Twofish]] implementiert und können auf Wunsch aktiviert werden. Das [[Cryptographic File System]] (CFS) ist ein auf [[Network File System|NFS]] aufsetzendes verschlüsseltes [[Dateisystem]] für [[Unix|UNIX]] und unterstützt ebenfalls Blowfish. Ein quelloffenes Windows-Programm zum Verschlüsseln von Dateien mittels Blowfish, Twofish und weiteren Algorithmen wie z.&amp;amp;nbsp;B. AES ist Blowfish Advanced CS. Auch im [[OpenDocument]]-Datenformat ist Blowfish als Verschlüsselungsmethode aufgeführt. Ab [[PHP]]&amp;amp;nbsp;5.3 ist Blowfish Bestandteil der crypt-Funktion. Blowfish ist ebenfalls in der freien Krypto-Bibliothek [[OpenSSL]] implementiert.&amp;lt;ref&amp;gt;Offizielle OpenSSL-Dokumentation:  {{Webarchiv|text=Blowfish |url=https://www.openssl.org/docs/crypto/blowfish.html |wayback=20140214081002 }}&amp;lt;/ref&amp;gt; Die [[Virtual Private Network|VPN]]-Software [[OpenVPN]] nutzt als symmetrische Komponente standardmäßig ebenfalls Blowfish.&amp;lt;ref&amp;gt;{{Webarchiv|url=http://www.imped.net/oss/misc/openvpn-2.0-howto-edit.html#security |wayback=20150209011916 |text=Offizielle OpenVPN-Dokumentation  }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenSSH hat in dem Ende 2016 veröffentlichten Release&amp;amp;nbsp;7.4 die Blowfish-Unterstützung, wie auch viele andere schwache Chiffren, entfernt.&amp;lt;ref&amp;gt;[https://www.openssh.com/txt/release-7.4 OpenSSH 7.4 Release Notes]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Twofish]], Nachfolger von Blowfish&lt;br /&gt;
* [[Puffy (Maskottchen)|Puffy, the blowfish]], Maskottchen der [[OpenSSH]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Vincent Rijmen: &amp;#039;&amp;#039;Cryptanalysis and design of iterated block ciphers&amp;#039;&amp;#039;. doctoral dissertation, Oktober 1997.&lt;br /&gt;
* Bruce Schneier: &amp;#039;&amp;#039;Description of a New Variable-Length Key, 64-bit Block Cipher (Blowfish)&amp;#039;&amp;#039;. Fast Software Encryption 1993, S.&amp;amp;nbsp;191–204, [https://www.schneier.com/paper-blowfish-fse.html schneier.com].&lt;br /&gt;
* Bruce Schneier: &amp;#039;&amp;#039;The Blowfish Encryption Algorithm – One Year Later&amp;#039;&amp;#039;. In: &amp;#039;&amp;#039;[[Dr. Dobb’s Journal]]&amp;#039;&amp;#039;, 20(9), S. 137, September 1995, [https://www.schneier.com/paper-blowfish-oneyear.html schneier.com].&lt;br /&gt;
* Serge Vaudenay: &amp;#039;&amp;#039;On the weak keys of Blowfish&amp;#039;&amp;#039;. In: D. Gollmann (Ed.): &amp;#039;&amp;#039;Fast Software Encryption (FSE’96)&amp;#039;&amp;#039;, LNCS 1039. Springer-Verlag, 1996, S. 27–32.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.schneier.com/blowfish.html Bruce Schneiers Beschreibung des Algorithmus] [https://www.schneier.com/blowfish-download.html incl etlicher Sourcecodes]&lt;br /&gt;
* [https://www.schneier.com/code/constants.txt S-Box und P-Box]&lt;br /&gt;
* [https://www.php-einfach.de/sonstiges_generator_blowfish.php Online Blowfish-Verschlüsselung (PHP oder JavaScript)]&lt;br /&gt;
* [http://www.users.zetnet.co.uk/hopwood/crypto/scan/cs.html#Blowfish Standard Cryptographic Algorithm Naming zu Blowfish]&lt;br /&gt;
* {{Webarchiv | url=http://www.lassekolb.info/bfacs.htm | wayback=20130219032000 | text=Blowfish Advanced CS}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Blockverschlüsselung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>