简体   繁体   English

无法使用 openssl_private_decrypt 解密任何消息

[英]Can't decrypt any message with openssl_private_decrypt

I try to decrypt RSA encrypted message from php with openssl_private_decrypt function.我尝试使用openssl_private_decrypt function 从 php 解密 RSA 加密消息。 But the function always return null.但是 function 总是返回 null。

My function is the following:我的 function 如下:

function (){
    $encrypted = 'gu6F7PFj2t+Mchp2Vi8dpiEXXVDkrjrSoOnRlCWeZYjOL6WdjvxULyEG5j9dZPORNMYx5eB9gTdni4NYYCKW3GTGS0zaKGgadChy/KZAUo40sBVmTFN3YOT6FfEr4oXZ9c0DqSRJ/LrZsZvsiHh52LleA9sapOgsm0bsgWzgnnE=';
    $privateKey = '-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCMeu1UGlPod+yC/cD+qDWRyotkKly7A+gD+twgekiTguZUJPJl
ZnB2JpL/cU9oO9nOKn6WJ4DGy7qNjuOj7sLvIkgekPjW6RA2LgOgmS9gSKeOb1OI
i59QdoyNv6xOblPz7ihsc5g/KsKEVCLeP5RfBXRXEzS0KHbBnQ3zS8PktwIDAQAB
AoGASZJ7xyc+uKpOCNCDChvoamFsnVn+VMeX9LWmIbBJYFAW9wyeknKTBZ3wMK4U
S1/FE094GoW30OWT311tZUa/ehtKA0M9ODCk/Sx9eWxq/oR1e6ypJS8zzKG47DD3
3+PxKGh+IPJXo8qINvxj7yYbjMxydo8xvBufuBgjoaU9r7ECQQDcsOZIuhvhyWkf
fJFjmyFYPNJD8eJBQZnxk9uIH/yDl5vJ+bf7fNFc3t+Epnjqfgf98W5frLUeYuzT
reusJHF5AkEAovS9EowcIeMp3Ce1utSdGZpjAkGdwVwnxhDLnyO2/TuKNpYODOS7
/bLS3NCg9Kw6UF1VLltFwjsBcSoyDmMrrwJAQOMOQlHeAsvaSbSxdqzU6AGx/OIw
mOk13w6PHH3zG6nG12LB0oKHeBvbckAUCzYVGXgT8LNx6UZCxZY8Vbe9WQJAZbTq
7VCVnnDyB36hZmKdSwWZFiduFuk1yeFhtYnNBHDM6xTs4A9DZizefwOX8h4sp0wZ
hj1hZMD/PWpgo6ox8QJAFYMky0FT8n19mNRN9aGkQ2GDqO+F8jLEnFJMPXJMGyCg
85CGeRH9sF69skcNToZMR304Ms/xyfLeG72SksHT7g==
-----END RSA PRIVATE KEY-----';
    return openssl_private_decrypt(base64_decode($encrypted), $decrypted, $privateKey);
}

The decrypted is the following: Salut les amis解密后的内容如下: Salut les amis

You can slightly modify your code to detect the error您可以稍微修改代码以检测错误

function (){

    $encrypted = 'gu6F7PFj2t+Mchp2Vi8dpiEXXVDkrjrSoOnRlCWeZYjOL6WdjvxULyEG5j9dZPORNMYx5eB9gTdni4NYYCKW3GTGS0zaKGgadChy/KZAUo40sBVmTFN3YOT6FfEr4oXZ9c0DqSRJ/LrZsZvsiHh52LleA9sapOgsm0bsgWzgnnE=';
    $privateKey = '-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCMeu1UGlPod+yC/cD+qDWRyotkKly7A+gD+twgekiTguZUJPJl
ZnB2JpL/cU9oO9nOKn6WJ4DGy7qNjuOj7sLvIkgekPjW6RA2LgOgmS9gSKeOb1OI
i59QdoyNv6xOblPz7ihsc5g/KsKEVCLeP5RfBXRXEzS0KHbBnQ3zS8PktwIDAQAB
AoGASZJ7xyc+uKpOCNCDChvoamFsnVn+VMeX9LWmIbBJYFAW9wyeknKTBZ3wMK4U
S1/FE094GoW30OWT311tZUa/ehtKA0M9ODCk/Sx9eWxq/oR1e6ypJS8zzKG47DD3
3+PxKGh+IPJXo8qINvxj7yYbjMxydo8xvBufuBgjoaU9r7ECQQDcsOZIuhvhyWkf
fJFjmyFYPNJD8eJBQZnxk9uIH/yDl5vJ+bf7fNFc3t+Epnjqfgf98W5frLUeYuzT
reusJHF5AkEAovS9EowcIeMp3Ce1utSdGZpjAkGdwVwnxhDLnyO2/TuKNpYODOS7
/bLS3NCg9Kw6UF1VLltFwjsBcSoyDmMrrwJAQOMOQlHeAsvaSbSxdqzU6AGx/OIw
mOk13w6PHH3zG6nG12LB0oKHeBvbckAUCzYVGXgT8LNx6UZCxZY8Vbe9WQJAZbTq
7VCVnnDyB36hZmKdSwWZFiduFuk1yeFhtYnNBHDM6xTs4A9DZizefwOX8h4sp0wZ
hj1hZMD/PWpgo6ox8QJAFYMky0FT8n19mNRN9aGkQ2GDqO+F8jLEnFJMPXJMGyCg
85CGeRH9sF69skcNToZMR304Ms/xyfLeG72SksHT7g==
-----END RSA PRIVATE KEY-----';

    if (!openssl_private_decrypt(base64_decode($encrypted), $decrypted, $privateKey)) {
        throw new Exception(openssl_error_string());
    }
    return $decrypted;
}

The result on my machine is:我机器上的结果是:

PHP Fatal error:  Uncaught Exception: error:0407109F:rsa routines:RSA_padding_check_PKCS1_type_2:pkcs decoding error in /home/foobar/test.php:20

So, there is a "pkcs decoding error" when decoding your encrypted string.因此,在解码加密字符串时会出现“pkcs 解码错误”。 And your openssl_private_decrypt failed to decrypt your message.并且您的openssl_private_decrypt未能解密您的消息。 Please check the way you encrypted / base64_encode the text to see if you have any mistake there.请检查您加密/ base64_encode文本的方式,看看您是否有任何错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 PHP:openssl_private_decrypt():key 参数不是有效的私钥 - PHP: openssl_private_decrypt(): key parameter is not a valid private key 如何为openssl_private_decrypt()提供私钥 - How to provide the private key for openssl_private_decrypt() openssl_private_decrypt不返回任何PHP - openssl_private_decrypt does not return anything PHP 什么是Kotlin相当于功能openssl_private_decrypt? - What is Kotlin equivalent of funtion openssl_private_decrypt? 无法解密数据 - openssl_private_decrypt(): key 参数不是有效的私钥 - Unable to decrypt data - openssl_private_decrypt(): key parameter is not a valid private key 使用RSACryptoServiceProvide在C#中加密,并在PHP中使用openssl_private_decrypt解密 - Encrypt in C# using RSACryptoServiceProvide and decrypt using openssl_private_decrypt in PHP 相当于openssl_private_decrypt和openssl_pkey_get_private的ASP.Net - ASP.Net equivalent of openssl_private_decrypt and openssl_pkey_get_private 用openssl_private_decrypt解密将不起作用,因为文本存储了撇号 - Decrypting with openssl_private_decrypt wont work because text is storing apostrophes openssl_decrypt() 无法解密在命令行上加密的文本 - openssl_decrypt() can't decrypt text encrypted on the commandline OpenSSL 升级到PHP8后无法用私钥解密数据 - OpenSSL can't decrypt data with private key after upgrading to PHP8
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM