Encryption Microsoft加密API不接受java程序生成的加密密钥 我们在java程序中生成了RSA公钥,在C++中加密数据,但在使用微软加密API加密密钥时,它不接受这个密钥。

Encryption Microsoft加密API不接受java程序生成的加密密钥 我们在java程序中生成了RSA公钥,在C++中加密数据,但在使用微软加密API加密密钥时,它不接受这个密钥。,encryption,key,rsa,public,Encryption,Key,Rsa,Public,有人对此有什么想法吗?Microsoft code对它可以使用的RSA密钥有一些固有的限制:它要求公钥长度(模位长度)是16的倍数,并且公钥指数必须适合32位无符号整数 然而,大多数RSA密钥都符合这些约束条件,通常的疑点是编码/解码问题。Java倾向于在任何地方使用big-endian,因为: 这就是基于ASN.1的编码规则所要求的 Java来自Sun,他长期以来一直在处理big-endian硬件(68020,Sparc) 另一方面,微软的CryptoAPI需要little endian。

有人对此有什么想法吗?

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

然而,大多数RSA密钥都符合这些约束条件,通常的疑点是编码/解码问题。Java倾向于在任何地方使用big-endian,因为:

  • 这就是基于ASN.1的编码规则所要求的
  • Java来自Sun,他长期以来一直在处理big-endian硬件(68020,Sparc)

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

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

但是,我所做的是使用Bouncy Castle API来实现这一点,因为他们的库有Java和.NET版本

有关更多选项,请查看此问题:

也许M$API需要一个二进制密钥,而您给它的密钥是base64编码的密钥块。反之亦然。它给出的错误消息是什么?您获得帮助的最佳机会是向我们展示一个完整的示例,包括无法接受密钥的代码的数据。