首先,您需要私钥来解密消息。通过“公钥(64 位编码)”,我猜你真正拥有的是 Base-64 编码的证书,标题行写着“----- BEGIN CERTIFICATE-----”和页脚显示“-----END CERTIFICATE-----”。
如果这是正确的,您将需要找到私钥。这有时存储在 PKCS #12 格式文件中,扩展名为“.p12”或“.pfx”。如果私钥存储在此类文件中,您将需要密码才能访问私钥。
或者,OpenSSL 和其他实用程序使用可以是 Base-64 编码或二进制的私钥文件。它们具有多种扩展名,可能受密码保护,也可能不受密码保护。如果您拥有的文件具有“-----BEGIN RSA PRIVATE KEY-----”或“-----BEGIN PRIVATE KEY-----”的标题行,那实际上是私钥.
最后,Windows 可以将私钥存储在其内部密钥库中。
当您澄清私钥的位置时,请更新您的问题。
如果在 Java 端使用私钥,则可能是在尝试执行数字签名。虽然我测试过的所有几个 Java 提供程序在(ab)以这种方式使用时都会产生正确的结果,但如果您正在执行签名,则Signature
应该使用该类。C# 代码也应该使用签名对象来“验证”签名。
使用私钥执行加密。由于公钥是公开的,任何人都可以解密消息;即,消息不是机密的。收件人使用公钥来验证签名的消息。