PHP函数openssl_public_decrypt
的C#等价物是什么?
我尝试过使用RSACryptoProvider,但api不允许我在没有私钥的情况下解密,
我需要创建提供数据的哈希值,然后与提供的签名进行比较
PHP中的
$key = openssl_get_publickey('provided_public_key'));
openssl_public_decrypt(base64_decode($_GET['signature']), $hashExpected, $key);
所以我的问题是如何在c#中生成hashExpected?
由于
答案 0 :(得分:0)
没有一个:.NET Framework没有附带OpenSSL。
您可以在.NET中使用OpenSSL的包装器:http://openssl-net.sourceforge.net/但它没有openssl_public_decrypt
的直接模拟,因为它提供了一个紧密的包装。
.NET附带了丰富的System.Cryptography
命名空间。
查看PHP的openssl源代码(此处:https://github.com/frice2014/php_source/blob/467ed5d6edff72219afd3e644516f131118ef48e/ext/openssl/php_openssl.c),我们看到openssl_public_decrypt
调用RSA_public_decrypt
,但这是一个实现细节。 PHP的openssl_public_decrypt
函数的文档没有指定它使用的算法,因此您不能依赖其他RSA实现读取的数据,例如.NET。
我假设您正在尝试编写可与PHP互操作的C#,而不是直接替换它。在这种情况下,我建议更改您的PHP实现,以便您知道完全正在使用什么加密算法(完成任何IV和密码块模式),因为没有那些你不能让两者可靠地工作在一起。