RC4 Drop-N PHP实现

时间:2014-04-04 11:01:16

标签: php encryption rc4-cipher

我已经在PHP中实现了RC4密码(它看起来与http://pear.php.net/package/Crypt_RC42几乎相同)。

但是,我想介绍(http://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack)中提到的“Drop-N”方法。

有没有一种简单的方法可以根据我上面使用的Class来实现它?

1 个答案:

答案 0 :(得分:1)

您需要做的就是在加密(或解密)之前将 n 字节数据添加到明文(或密文)的开头。

这些字节包含的内容并不重要,只要它们有 n 即可。然后丢弃加密(解密)数据的第一个 n 字节。使用不同的填充字节进行加密和解密将没有任何区别。

或换句话说:

$define('DROP_N_PADDING_LENGTH',512);  // (or whatever)
$message = "Hello, world!";

// encrypt:
$ciphertext = $rc4->encrypt(str_repeat(" ",DROP_N_PADDING_LENGTH) . $message);
$ciphertext = substr($ciphertext,DROP_N_PADDING_LENGTH);

// decrypt:
$plaintext = $rc4->decrypt(str_repeat(" ",DROP_N_PADDING_LENGTH) . $ciphertext);
$plaintext = substr($plaintext,DROP_N_PADDING_LENGTH);