b"\n_START_ARTICLE_\nBlowfish\n_START_SECTION_\nL'algorisme\n_START_PARAGRAPH_\nBlowfish t\xc3\xa9 una longitud de bloc de 64 bits i una mida de clau variable des de 32 fins a 448 bits. \xc3\x89s un xifratge per xarxa de Feistel de 16 rondes i fa servir claus dependents de les Caixes-S. \xc3\x89s similar en estructura a CAST5, que fa servir caixes-S fixes._NEWLINE_El diagrama de l'esquerra mostra l'actiaci\xc3\xb3 de Blowfish. Cada l\xc3\xadnia representa 32 bits. L'algorisme conserva dues taules de subclaus: la taula-P de 18 entres i quatre caixes-S de 256 entrades. Les caixes-S accepten entrades de 8 bits o donen 32 bits a la sortida. A cada ronda es fa servir una entrada de la taula-P, i un altre despr\xc3\xa9s de la ronda final, cada meitat del bloc de dades es combina amb una operaci\xc3\xb3 XOR amb una de les dues entrades-P restants encara no fetes servir._NEWLINE_El diagrama de dalt a la dreta presenta le funci\xc3\xb3 F de Blowfish. La funci\xc3\xb3 parteix l'entrada de 32 bits en quatre quartes parts de vuit bits cada una, i fa servir les parts com entrada a les caixes-S. Les sortides se sumen m\xc3\xb2dul 2\xc2\xb3\xc2\xb2 i es combinen amb una operaci\xc3\xb3 XOR per obtenir la sortida final de 32 bits._NEWLINE_El desxifratge \xc3\xa9s exactament igual com el xifratge, excepte que P1, P2..., P18 es fan servir en l'ordre invers. Aix\xc3\xb2 no \xc3\xa9s tan obvi perqu\xc3\xa8 l'operaci\xc3\xb3 XOR \xc3\xa9s commutativa i associativa. Un error habitual \xc3\xa9s fer servir l'ordre invers del xifratge com algorisme de desxifratge (i.e. primer combinant amb l'operaci\xc3\xb3 XOR P17 i P18 amb el bloc de text xifrat, llavors fent servir les entrades P en ordre invers). _NEWLINE_La programaci\xc3\xb3 de claus de Blowfish comen\xc3\xa7a inicialitzant la taula P i les caixes S amb valors obtinguts a partir dels d\xc3\xadgits hexadecimals de pi, que no cont\xc3\xa9 cap patr\xc3\xb3 obvi. La clau secreta llavors es combina amb una operaci\xc3\xb3 XOR amb les entrades P en ordre (reciclant la clau si \xc3\xa9s necessari). Per tant un bloc amb tots els 64 bits a zero \xc3\xa9s encriptat amb l'algorisme tal qual. El text xifrat resultant substitueix P\xe2\x82\x81 i P\xe2\x82\x82. El text xifrat s'encripta llavors una altra vegada amb les subclaus noves, i P\xe2\x82\x83 i P\xe2\x82\x84 es canvien pel text xifrat nou. Aix\xc3\xb2 continua, substituint la taula P sencera i totes les entrades de les caixes S. En total, l'algorisme d'encriptaci\xc3\xb3 Blowfish s'executar\xc3\xa0 521 vegades per generar totes les subclaus - es processen al voltant de 4 Kb de dades.\n_START_SECTION_\nCriptoan\xc3\xa0lisis de Blowfish\n_START_PARAGRAPH_\nNo hi ha cap cryptoan\xc3\xa0lisis efica\xc3\xa7 conegut p\xc3\xbablicament contra la versi\xc3\xb3 de ronda completa de Blowfish. S'ha identificat un error d'extensi\xc3\xb3 de senyal en una publicaci\xc3\xb3 de codi C._NEWLINE_El 1996, Serge vaudenay va trobar un atac de texts clars coneguts que requereix 2\xe2\x81\xb8\xca\xb3\xe2\x81\xba \xc2\xb9 texts clars coneguts per trencar-lo, on r \xc3\xa9s el nombre de rondes. A m\xc3\xa9s, tamb\xc3\xa9 trobava una classe de claus febles que es poden detectar i ser trencades pel mateix atac amb nom\xc3\xa9s 2\xe2\x81\xb4\xca\xb3 \xe2\x81\xba \xc2\xb9 texts clars coneguts. Aquest atac no es pot fer servir contra el Blowfish normal; assumeix el coneixement de les caixes S dependents de la clau. Vincent Rijmen, a la seva tesi doctoral introdu\xc3\xafa un atac diferencial de segon ordre que pot trencar quatre rondes per\xc3\xb2 no m\xc3\xa9s. Roman desconeguda la manera de trencar les 16 rondes completes, a part d'un atac per la for\xc3\xa7a bruta._NEWLINE_Bruce Schneier observa que mentre Blowfish \xc3\xa9s encara en \xc3\xbas, recomana fer servir en canvi l'algorisme Twofish m\xc3\xa9s recent.\n_START_SECTION_\nBlowfish en la pr\xc3\xa0ctica\n_START_PARAGRAPH_\nBlowfish \xc3\xa9s un sistema de xifratge per blocs r\xc3\xa0pid, excepte quan es canvien les claus. Cada clau nova exigeix un preprocessament equivalent a encriptar aproximadament 4 kilobytes de text, que \xc3\xa9s molt lent comparat amb altres xifratges de bloc. Aix\xc3\xb2 evita el seu \xc3\xbas en certes aplicacions, per\xc3\xb2 no \xc3\xa9s un problema en altres. En una aplicaci\xc3\xb3, \xc3\xa9s de fet un benefici: el m\xc3\xa8tode de hashing de contrasenya que fa servir OpenBSD fa servir un algorisme obtingut de Blowfish que fa \xc3\xbas de la lentitud de la programaci\xc3\xb3 de claus; la idea \xc3\xa9s que l'esfor\xc3\xa7 computacional extraordinari que exigeix d\xc3\xb3na protecci\xc3\xb3 contra atacs de diccionari._NEWLINE_En aplicacions actuals de biblioteques criptogr\xc3\xa0fiques (espec\xc3\xadficament OpenSSL), Aes-128 \xc3\xa9s una mica (< 50%) m\xc3\xa9s r\xc3\xa0pid que Blowfish en molts maquinaris. \xc3\x89s probable que els aven\xc3\xa7os en l'arquitectura CPU (d'execuci\xc3\xb3 fora d'ordre) accelerin AES m\xc3\xa9s que Blowfish. Per exemple, la CPU \xc3\x80tom de Intel corre Blowfish dues vegades m\xc3\xa9s r\xc3\xa0pid que AES-128. Hi pot haver espai per a m\xc3\xa9s optimitzaci\xc3\xb3 de Blowfish, per\xc3\xb2 el Rijndael ha rebut m\xc3\xa9s atenci\xc3\xb3 des que es triava per a AES._NEWLINE_Est\xc3\xa0 estesa la creen\xc3\xa7a que Blowfish sigui l'algorisme m\xc3\xa9s r\xc3\xa0pid, encara que actualment no \xc3\xa9s veritat en maquinari de Pc. Roman el cas en algunes Cpus incrustades (p. ex. \xc3\x80tom, ARM). La velocitat d'encriptaci\xc3\xb3 es t\xc3\xa9 amb possibilitats de ser un coll d'ampolla en aquests sistemes m\xc3\xa9s lents, aix\xc3\xad Blowfish \xc3\xa9s naturalment \xc3\xbatil ells. Tanmateix, algunes plataformes aquestes CPUs lentes proporcionen maquinari de criptografia dedicat, alguns dels quals nom\xc3\xa9s suporten els algorismes m\xc3\xa9s populars (p. ex. AES)._NEWLINE_Blowfish t\xc3\xa9 una petjada de mem\xc3\xb2ria just per damunt de 4 kilobytes de RAM. Aquesta restricci\xc3\xb3 no \xc3\xa9s un problema ni tan sols per als ordinadors personals m\xc3\xa9s vells i els ordinadors port\xc3\xa0tils, encara que evita que es pugui fer servir en els sistemes incrustats m\xc3\xa9s petits com les primeres targetes intel\xc2\xb7ligents._NEWLINE_Blowfish va ser un dels primers sistemes de xifratge per bloc segurs no subjecte a cap patent i per aix\xc3\xb2 lliurement disponible perqu\xc3\xa8 qualsevol el faci servir. Aquest benefici ha contribu\xc3\xaft a la seva popularitat en el programari criptogr\xc3\xa0fic."