function testValidate() { $expected = '$5$rounds=5000$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5'; $actual = Crypt2007::crypt_sha256('Hello world!', 5000, 'saltstring', true); $this->assertEquals($expected, $actual); $this->assertTrue(Crypt2007::validate('Hello world!', $expected, true)); $this->assertFalse(Crypt2007::validate('Goodbye world!', $expected, true)); $this->assertTrue(Crypt2007::validate('Hello world!', $expected, false)); $this->assertFalse(Crypt2007::validate('Goodbye world!', $expected, false)); $expected = '$6$rounds=5000$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1'; $actual = Crypt2007::crypt_sha512('Hello world!', 5000, 'saltstring', true); $this->assertEquals($expected, $actual); $this->assertTrue(Crypt2007::validate('Hello world!', $expected, true)); $this->assertFalse(Crypt2007::validate('Goodbye world!', $expected, true)); $this->assertTrue(Crypt2007::validate('Hello world!', $expected, false)); $this->assertFalse(Crypt2007::validate('Goodbye world!', $expected, false)); // negative cases // unknown algorithm $expected = '$1$rounds=5000$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1'; $this->assertFalse(Crypt2007::validate('Hello world!', $expected, false)); // not enought '$' $expected = '$6$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1'; $this->assertFalse(Crypt2007::validate('Hello world!', $expected, false)); // rounds are too low $expected = '$6$round=999$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1'; $this->assertFalse(Crypt2007::validate('Hello world!', $expected, false)); }