1--TEST-- 2Crypto\PBKDF2::derive basic usage. 3--SKIPIF-- 4<?php if (!class_exists('Crypto\PBKDF2')) die("Skip: PBKDF2 is not supported (update OpenSSL version)"); ?> 5--FILE-- 6<?php 7$vectors = array( 8 array( 9 'H' => 'sha1', 10 'P' => 'password', 11 'S' => 'salt', 12 'c' => 1, 13 'dkLen' => 20, 14 'DK' => "0c 60 c8 0f 96 1f 0e 71 f3 a9 b5 24 af 60 12 06 2f e0 37 a6" 15 ), 16 array( 17 'H' => 'sha1', 18 'P' => 'password', 19 'S' => 'salt', 20 'c' => 2, 21 'dkLen' => 20, 22 'DK' => "ea 6c 01 4d c7 2d 6f 8c cd 1e d9 2a ce 1d 41 f0 d8 de 89 57" 23 ), 24 array( 25 'H' => 'sha1', 26 'P' => 'password', 27 'S' => 'salt', 28 'c' => 4096, 29 'dkLen' => 20, 30 'DK' => "4b 00 79 01 b7 65 48 9a be ad 49 d9 26 f7 21 d0 65 a4 29 c1" 31 ), 32 array( 33 'H' => 'sha1', 34 'P' => 'passwordPASSWORDpassword', 35 'S' => 'saltSALTsaltSALTsaltSALTsaltSALTsalt', 36 'c' => 4096, 37 'dkLen' => 25, 38 'DK' => "3d 2e ec 4f e4 1c 84 9b 80 c8 d8 36 62 c0 e4 4a 8b 29 1a 96 4c f2 f0 70 38" 39 ), 40 array( 41 'H' => 'sha1', 42 'P' => "pass\0word", 43 'S' => "sa\0lt", 44 'c' => 4096, 45 'dkLen' => 16, 46 'DK' => "56 fa 6a a7 55 48 09 9d cc 37 d7 f0 34 25 e0 c3" 47 ), 48); 49 50foreach ($vectors as $v) { 51 $pbkdf2 = new Crypto\PBKDF2($v['H'], $v['dkLen'], $v['S'], $v['c']); 52 $dk = pack('H*', str_replace(' ', '', $v['DK'])); 53 if ($dk !== $pbkdf2->derive($v['P'])) { 54 print_r($v); 55 } 56} 57echo "DONE"; 58?> 59--EXPECT-- 60DONE 61