Annotation of embedaddon/php/ext/mcrypt/tests/blowfish.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Test for blowfish compatibility
! 3: --SKIPIF--
! 4: <?php if (!extension_loaded("mcrypt")) print "skip"; ?>
! 5: --FILE--
! 6: <?php
! 7: function hex2bin($data) {
! 8: $len = strlen($data);
! 9: return pack("H" . $len, $data);
! 10: }
! 11:
! 12: print "key plain crypt guess stat\n";
! 13: $null = "\0\0\0\0\0\0\0\0";
! 14: $vectors = file(dirname(__FILE__) . "/vectors.txt");
! 15:
! 16: $td = mcrypt_module_open ("blowfish", "", MCRYPT_MODE_ECB, "");
! 17:
! 18: foreach($vectors as $data) {
! 19: $data = trim($data);
! 20: if ($data) {
! 21: list($key,$plain,$crypt) = preg_split("/[[:space:]]+/",$data);
! 22: printf("%s %s ",
! 23: $key,
! 24: $plain
! 25: );
! 26: $key = hex2bin(trim($key));
! 27: $plain = hex2bin(($plain));
! 28: $crypt = strtolower(trim($crypt));
! 29:
! 30: mcrypt_generic_init ($td, $key, $null);
! 31: $guess = mcrypt_generic ($td, $plain);
! 32: $guess = bin2hex($guess);
! 33: printf("%s %s %s\n",
! 34: $crypt,
! 35: $guess,
! 36: ($crypt==$guess ? "OK" : "BAD")
! 37: );
! 38: }
! 39: }
! 40:
! 41: // Longer test case from http://www.schneier.com/code/vectors.txt
! 42: $td = mcrypt_module_open ("blowfish", "", MCRYPT_MODE_CBC, "");
! 43:
! 44: $key = hex2bin( "0123456789ABCDEFF0E1D2C3B4A59687" );
! 45: $iv = hex2bin( "FEDCBA9876543210" );
! 46: $plain = hex2bin( "37363534333231204E6F77206973207468652074696D6520666F722000" );
! 47:
! 48: mcrypt_generic_init( $td, $key, $iv );
! 49: $guess = bin2hex( mcrypt_generic( $td, $plain ) );
! 50:
! 51: echo "\n", $guess, "\n";
! 52: ?>
! 53: --EXPECTF--
! 54: key plain crypt guess stat
! 55: 0000000000000000 0000000000000000 4ef997456198dd78 4ef997456198dd78 OK
! 56: FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 51866fd5b85ecb8a 51866fd5b85ecb8a OK
! 57: 3000000000000000 1000000000000001 7d856f9a613063f2 7d856f9a613063f2 OK
! 58: 1111111111111111 1111111111111111 2466dd878b963c9d 2466dd878b963c9d OK
! 59: 0123456789ABCDEF 1111111111111111 61f9c3802281b096 61f9c3802281b096 OK
! 60: 1111111111111111 0123456789ABCDEF 7d0cc630afda1ec7 7d0cc630afda1ec7 OK
! 61: FEDCBA9876543210 0123456789ABCDEF 0aceab0fc6a0a28d 0aceab0fc6a0a28d OK
! 62: 7CA110454A1A6E57 01A1D6D039776742 59c68245eb05282b 59c68245eb05282b OK
! 63: 0131D9619DC1376E 5CD54CA83DEF57DA b1b8cc0b250f09a0 b1b8cc0b250f09a0 OK
! 64: 07A1133E4A0B2686 0248D43806F67172 1730e5778bea1da4 1730e5778bea1da4 OK
! 65: 3849674C2602319E 51454B582DDF440A a25e7856cf2651eb a25e7856cf2651eb OK
! 66: 04B915BA43FEB5B6 42FD443059577FA2 353882b109ce8f1a 353882b109ce8f1a OK
! 67: 0113B970FD34F2CE 059B5E0851CF143A 48f4d0884c379918 48f4d0884c379918 OK
! 68: 0170F175468FB5E6 0756D8E0774761D2 432193b78951fc98 432193b78951fc98 OK
! 69: 43297FAD38E373FE 762514B829BF486A 13f04154d69d1ae5 13f04154d69d1ae5 OK
! 70: 07A7137045DA2A16 3BDD119049372802 2eedda93ffd39c79 2eedda93ffd39c79 OK
! 71: 04689104C2FD3B2F 26955F6835AF609A d887e0393c2da6e3 d887e0393c2da6e3 OK
! 72: 37D06BB516CB7546 164D5E404F275232 5f99d04f5b163969 5f99d04f5b163969 OK
! 73: 1F08260D1AC2465E 6B056E18759F5CCA 4a057a3b24d3977b 4a057a3b24d3977b OK
! 74: 584023641ABA6176 004BD6EF09176062 452031c1e4fada8e 452031c1e4fada8e OK
! 75: 025816164629B007 480D39006EE762F2 7555ae39f59b87bd 7555ae39f59b87bd OK
! 76: 49793EBC79B3258F 437540C8698F3CFA 53c55f9cb49fc019 53c55f9cb49fc019 OK
! 77: 4FB05E1515AB73A7 072D43A077075292 7a8e7bfa937e89a3 7a8e7bfa937e89a3 OK
! 78: 49E95D6D4CA229BF 02FE55778117F12A cf9c5d7a4986adb5 cf9c5d7a4986adb5 OK
! 79: 018310DC409B26D6 1D9D5C5018F728C2 d1abb290658bc778 d1abb290658bc778 OK
! 80: 1C587F1C13924FEF 305532286D6F295A 55cb3774d13ef201 55cb3774d13ef201 OK
! 81: 0101010101010101 0123456789ABCDEF fa34ec4847b268b2 fa34ec4847b268b2 OK
! 82: 1F1F1F1F0E0E0E0E 0123456789ABCDEF a790795108ea3cae a790795108ea3cae OK
! 83: E0FEE0FEF1FEF1FE 0123456789ABCDEF c39e072d9fac631d c39e072d9fac631d OK
! 84: 0000000000000000 FFFFFFFFFFFFFFFF 014933e0cdaff6e4 014933e0cdaff6e4 OK
! 85: FFFFFFFFFFFFFFFF 0000000000000000 f21e9a77b71c49bc f21e9a77b71c49bc OK
! 86: 0123456789ABCDEF 0000000000000000 245946885754369a 245946885754369a OK
! 87: FEDCBA9876543210 FFFFFFFFFFFFFFFF 6b5c5a9c5d9e0a5a 6b5c5a9c5d9e0a5a OK
! 88:
! 89: 6b77b4d63006dee605b156e27403979358deb9e7154616d959f1652bd5ff92cc
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>