0

We have generated RSA public key by our java program to encrypt the data in C++ before transmitting it but when we use this key to encrypt the data using Microsoft encryption API, it doesn't accepts this key.

Do anyone has any ideas on this?

4

2 回答 2

1

Microsoft 代码对其可以使用的 RSA 密钥有一些内在限制:它要求公钥长度(模数位长度)是 16 的倍数,并且公共指数必须适合 32 位无符号整数。

但是,大多数 RSA 密钥都符合这些限制条件,并且通常怀疑是编码/解码问题。Java 倾向于在任何地方都使用大端,因为:

  • 这就是基于 ASN.1 的编码规则所要求的;
  • Java 来自长期处理大端硬件(68020,Sparc)的 Sun。

另一方面,微软的 CryptoAPI 需要 little-endian。您可能以错误的顺序使用了公共模数。

于 2010-01-27T14:07:14.240 回答
0

以我的经验,RSA 密钥的序列化在 Java 和 MS 之间是不同的。

但是,我所做的是使用 Bouncy Castle API 来执行此操作,因为他们有 Java 和 .NET 版本的库。

有关更多选项,您可以查看以下问题: RSA: How to generate private key in java and use it in C#?

于 2010-08-02T11:29:55.430 回答