要开始,你需要的私人密钥解密消息。通过“公钥(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#代码也应该使用签名对象来“验证”签名。
使用私钥执行加密。由于公钥公钥密钥为public,任何人都可以解密该消息;即该消息不是机密的。公用密钥由收件人用来验证签名的消息。
请看我的答案更新。 – erickson 2009-10-20 19:18:10