0
感謝您的關注。我最近一直在將基於對稱的舊加密系統更新到基於非對稱的RSA系統,以提高安全性。我認爲自己是一個適度熟練的PHP程序員。有人說,我完全使用phpseclib難住這個問題。多次訪問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']);
?>
我也嘗試創建個人'全局'變量。同樣的事情發生..
我期待着解決這個問題。
UPDATE:
我是能夠成功地打擊了我的問題雖然無關與我想的那樣。看起來我的客戶端應用程序(C#)和上面看到的PHP結尾使用了兩種不同的填充算法。這導致客戶端應用程序考慮數據損壞。在PHP腳本的邏輯中,這只是導致上述功能之一工作。
感謝您的留言。看來我真的無法將適當的填充算法從C#連接到PHP。這導致解密或簽名的輸出被破壞(就不匹配客戶端應用程序而言)。我相信這個問題在phpseclib構造函數中說謊,我無法創建該類的多個實例。 –