感谢您的关注。我最近一直在将我在服务器上设置的旧的基于对称的加密系统更新为基于非对称的 RSA 系统,以获得更好的安全性。我认为自己是一个熟练的 PHP 程序员。话虽如此,我对使用 phpseclib 的这个问题完全感到困惑。
似乎我无法在脚本中的任何位置创建该类的两个实例。请参阅下面的代码:
<?php include_once('Crypt/RSA.php');
function signRSA($string_to_sign){
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('pvk.txt')); // private key
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
$signature = $rsa->sign($string_to_sign);
return base64_encode($signature);
}
function decryptRSA($string_to_decrypt){
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('pvk.txt')); // private key
return $rsa->decrypt(base64_decode($string_to_decrypt));
}
//Which ever function is on top is the only one that appears to work. The first line below will work, however the second will fail returning me a null value.
$sig = signRSA($_POST['data']);
$plain = decryptRSA($_POST['otherdata']);
?>
我也尝试过创建一个单独的“全局”变量。同样的事情发生了。。
我期待着解决这个问题。
更新:
我能够成功地解决我的问题,尽管与我的想法无关。看起来我的客户端应用程序(C#)和上面看到的 PHP 端使用了两种不同的填充算法。这导致客户端应用程序认为数据已损坏。在 PHP 脚本的逻辑中,这仅导致上述功能之一起作用。