/** * @dataProvider engineVectors */ public function testVectors($engine, $engineName, $key, $offset, $expected) { $rc4 = new RC4(); $rc4->setPreferredEngine($engine); $rc4->setKey($key); if ($rc4->getEngine() != $engine) { self::markTestSkipped('Unable to initialize ' . $engineName . ' engine for ' . strlen($key) * 8 . '-bit key'); } $result = $rc4->encrypt(str_repeat("", $offset + 16)); $this->assertEquals(bin2hex(substr($result, -16)), $expected, "Failed asserting that key {$key} yielded expected output at offset {$offset} in {$engineName} engine"); }