Java and C++ (VS) RSA encryption
Java and C++ (VS) RSA encryption
我正在尝试使用RSA使两个应用程序相互通信。第一个是用c++编写的,第二个是用java编写的。首先需要向java应用程序发送公钥。我正在使用
CryptExportKey(m_hCryptKey, NULL, PUBLICKEYBLOB, 0, pbKeyBlob, &dwBlobLen);
函数。在java应用程序中,我试图使用以下函数导入它:
public PublicKey getPublicKeyFromBytes(byte[] keyBytes) throws NoSuchAlgorithmException, InvalidKeySpecException {
KeyFactory keyFactory;
keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(keyBytes);
return keyFactory.generatePublic(pubKeySpec);
}
它抛出InvalidKeySpecException。你能告诉我如何导入/导出密钥吗?
您必须为Microsoft RSA公钥结构编写解码器。幸运的是,这个结构定义得很好。请注意,它使用小端序编码,因此您可以首先将结构包装在ByteBuffer
中,将顺序设置为小端序。
然后应该使用BigInteger.valueOf(1, bigEndianByteArray)
将公共指数和模数部分转换为BigInteger
。诀窍是从ByteBuffer
中读取字节后,按正确的顺序获取bigEndianByteArray
中的字节。
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- WinCrypt RSA vs Java org.bouncycastle
- 使用 char 数组公钥的 OpenSSL 进行 RSA 加密
- OpenSSL RSA 解密随机失败 C/C++
- C# 中的 RSA 签名和 Crypto++ C++中的验证
- 如何通过 Crypto++ 和 RSA 对文件进行签名
- C++ 和 node.js 之间的 RSA 加密
- 从字符串 Crypto++ 导入 RSA 公钥/私钥
- 在加密++中使用RSA加密对称AES密钥
- C++项目需要什么才能使用证书 (RSA-SHA256) 对文件进行签名
- C++生成 RSA 密钥对并读取
- RSA 加密和解密期间的随机数生成器要求
- 博坦加载现有的 RSA 私钥
- 计算 RSA 并以十六进制格式保存到文件
- 使用C 和WinCrypt库的RSA NCRYPTICT和C#解密
- C 从XML导入CAPI/CNG中的RSA私钥
- 使用密码将 RSA 私钥写入 PEM 文件
- Java and C++ (VS) RSA encryption
- visual RSA Encryption for C++