Skip to content

Commit fcaafca

Browse files
authored
Merge pull request #5714 from randombit/jack/blowfish-72
Extend Blowfish to support keys up to 72 bytes in length
2 parents cbf8007 + f897233 commit fcaafca

3 files changed

Lines changed: 71 additions & 2 deletions

File tree

src/lib/block/blowfish/blowfish.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Botan {
1616
/**
1717
* Blowfish
1818
*/
19-
class BOTAN_TEST_API Blowfish final : public Block_Cipher_Fixed_Params<8, 1, 56> {
19+
class BOTAN_TEST_API Blowfish final : public Block_Cipher_Fixed_Params<8, 1, 72> {
2020
public:
2121
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override;
2222
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override;

src/lib/block/blowfish/info.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<defines>
2-
BLOWFISH -> 20180718
2+
BLOWFISH -> 20260704
33
</defines>
44

55
<module_info>

src/tests/data/block/blowfish.vec

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,3 +252,72 @@ Out = 499DB1464EA293B246A429CD198666EDA5EC02B9E04480B1D7AA64A5B8DECADD0DF49DA89D
252252
Key = 00112233445566778899aabbccddeeff
253253
In = 000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013001400150016001700180019001a001b001c001d001e001f0020002100220023002400250026002700280029002a002b002c002d002e002f0030003100320033003400350036003700380039003a003b003c003d003e003f0040004100420043004400450046004700480049004a004b004c004d004e004f0050005100520053005400550056005700580059005a005b005c005d005e005f0060006100620063006400650066006700680069006a006b006c006d006e006f0070007100720073007400750076007700780079007a007b007c007d007e007f0080008100820083008400850086008700880089008a008b008c008d008e008f0090009100920093009400950096009700980099009a009b009c009d009e009f00a000a100a200a300a400a500a600a700a800a900aa00ab00ac00ad00ae00af00b000b100b200b300b400b500b600b700b800b900ba00bb00bc00bd00be00bf00c000c100c200c300c400c500c600c700c800c900ca00cb00cc00cd00ce00cf00d000d100d200d300d400d500d600d700d800d900da00db00dc00dd00de00df00e000e100e200e300e400e500e600e700e800e900ea00eb00ec00ed00ee00ef00f000f100f200f300f400f500f600f700f800f900fa00fb00fc00fd00fe00ff0000010101020103010401050106010701080109010a010b010c
254254
Out = 91288b2fa6b357598f37c31559f11f3a7976c3d70f6ead9c66db21148f1ddc22857b299be03a377d406321e0fe7d899a63248287027c1ecd22ccd811b1aaf6de6548fd32f00b1bbc183bba1b4333e61145b9c786d63753e3eb45f77420850cdc3983d04ed511db0e5efbb54129c9a430b4cfe9871cf0c3c69902ec375916563e458b84d3afba5f391060fc4fc57ea7567d37311f7b54334ce4516c707245f8d37bcf893612a8c3840163ea41e804d2b15d1b43166d68b3691eb5b331fc3c82f0c3e854f16fca2e8ceb06e4da4ecce50719e40bf99aa29bb435488ed1b6b5551b4fe323f3c7ac0cbd1e46a5a465df5068dfd17d5fc2e4f0832ae59deea43ed853b822efd55d8a9b0e916f682066fba9ccc1b37624bd88fcbb9ca4f36d4ace41340fa7ed05f7f5dc70597b16cace005760a306f36958b7fe49efeddbd21500b5248508526c32e5df6056f6b25fa0bdda070dab37032bd25356bfa61c9720deb7bf7f6dcdbd6e0ed4e942431ccbe76323ceca207b19c36c561708ef75c0ef35aa5d93441aa029086b31d24c6e1ec8d9a10400fdce154fabed4c07c2e3ca7999c2a888ebaae8b1a36dddc478a8910a813230523471fa41b868adabe4a9bcdbee22ee331b08a7b29f41e2dcb21c4e7bacddfa5e741f0604b0b791485f0f2cfbd834449d73fd7fd3c6a97fbc6d00bcdad46d199ad5be64bca5f016323f0b0e2af863da74355b0f4079e4f66532831ea866df0a8e7c5501862a2343
255+
256+
# Tests for long (> 56 byte) keys, generated using OpenSSL
257+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7
258+
In = 0123456789ABCDEF
259+
Out = F354A2170F6C4E62
260+
261+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8
262+
In = 0123456789ABCDEF
263+
Out = 2F0C59442F9BEBEE
264+
265+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9
266+
In = 0123456789ABCDEF
267+
Out = E59C0D4625189413
268+
269+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DA
270+
In = 0123456789ABCDEF
271+
Out = 1695BCDA4D368373
272+
273+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEB
274+
In = 0123456789ABCDEF
275+
Out = 7133E271AF08910B
276+
277+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC
278+
In = 0123456789ABCDEF
279+
Out = 7D45BBB98F07869B
280+
281+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D
282+
In = 0123456789ABCDEF
283+
Out = 9D7BA6CF0AD29B2F
284+
285+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E
286+
In = 0123456789ABCDEF
287+
Out = 6DDDB4B3ED1C530A
288+
289+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F
290+
In = 0123456789ABCDEF
291+
Out = 3524B91E4C0C02A6
292+
293+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F40
294+
In = 0123456789ABCDEF
295+
Out = 086356A4036ADBA3
296+
297+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F4051
298+
In = 0123456789ABCDEF
299+
Out = BE45413E4019F1B2
300+
301+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F405162
302+
In = 0123456789ABCDEF
303+
Out = A7DED8AB58018C65
304+
305+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F40516273
306+
In = 0123456789ABCDEF
307+
Out = F206DAFC14662683
308+
309+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F4051627384
310+
In = 0123456789ABCDEF
311+
Out = AFAA87B0242B6E24
312+
313+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F405162738495
314+
In = 0123456789ABCDEF
315+
Out = D00E78E7D849290C
316+
317+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F405162738495A6
318+
In = 0123456789ABCDEF
319+
Out = A12974320EC9F54C
320+
321+
Key = 00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F2031425364758697A8B9CADBECFD0E1F30415263748596A7B8C9DAEBFC0D1E2F405162738495A6B7
322+
In = 0123456789ABCDEF
323+
Out = 52E0A742FDA777D3

0 commit comments

Comments
 (0)