我已经在 PHP 中实现了 RC4 密码(它看起来几乎与这个http://pear.php.net/package/Crypt_RC42相同)。
但是,我想介绍(http://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack)中提到的“Drop-N”方法。
有没有一种基于我上面使用的类的简单方法来实现它?
我已经在 PHP 中实现了 RC4 密码(它看起来几乎与这个http://pear.php.net/package/Crypt_RC42相同)。
但是,我想介绍(http://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack)中提到的“Drop-N”方法。
有没有一种基于我上面使用的类的简单方法来实现它?
您所要做的就是在加密(或解密)之前将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);