我得到了一个模块,该模块可以对RSA的数据进行加密,然后传递给C#。
C#需要根据公共密钥(64位编码)和传递的令牌对其进行解密。

我有token(令牌),64位编码的公共密钥,可以帮助我开始使用示例。
我从Java端知道的是,它正在使用。我已经从Java端得到了结果,需要在C#中编写解析器以对此进行解密。我同时获得了公共密钥和令牌作为字符串值。

    Cipher cipher = Cipher.getInstance(ALGORITHM); //Algorithm = "RSA"
    cipher.init(Cipher.DECRYPT_MODE, key);


谢谢

最佳答案

首先,您需要私钥来解密消息。通过“公共密钥(64位编码)”,我猜测您真正拥有的是Base-64编码的证书,其标题行显示“ ----- BEGIN CERTIFICATE -----”和页脚显示“ ----- END CERTIFICATE -----”。

如果正确,则需要找到私钥。有时,它存储在扩展名为“ .p12”或“ .pfx”的PKCS#12格式文件中。如果私钥存储在这样的文件中,则需要密码才能访问。

另外,OpenSSL和其他实用程序使用可以是Base-64编码或二进制的私钥文件。这些具有各种扩展名,并且可能会或可能不会受到密码保护。如果您拥有的文件的标题行为“ ----- BEGIN RSA PRIVATE KEY -----”或“ ----- BEGIN PRIVATE KEY -----”,则实际上是私钥。

最后,Windows可以将私钥存储在其内部密钥存储中。

当您明确说明私钥的位置时,请更新您的问题。



如果在Java端使用私钥,则可能是尝试执行数字签名。尽管我测试过的所有几种Java提供程序在以这种方式使用时都会产生正确的结果,但是如果您正在签名,则应使用Signature类。 C#代码也应使用签名对象来“验证”签名。

加密使用私钥执行。由于公共密钥是公共密钥,因此任何人都可以解密该消息。也就是说,该消息不是机密信息。收件人使用公钥来验证签名的消息。

07-24 18:58
查看更多