public static function crypt($input, $password, $algo = 'sha512') { $chunks = \str_split($input, Str::hashSize($algo)); foreach ($chunks as $i => &$chunk) { $chunk = $chunk ^ \hash($algo, $password . $i, true); } return \implode($chunks); }
public function testVector() { $input = 'hello world'; $pass = '******'; $vector = base64_decode('vusXragCy83KQFo'); $this->assertEquals($input, Otp::crypt($vector, $pass)); }