以下方法不起作用。 decodeMessage最终会有垃圾而不是预期的结果。
我跟随一个据说可行的例子。
public static void POCSimple(){ 锟斤拷
事实证明,在我的原始代码中,decodingBytes包含正确解密的字节。以下命令将decodeBytes转换为垃圾字符...
decodedMessage = Base64.encodeToString(decodedBytes, Base64.DEFAULT);
我用...替换了那段代码
String str = new String(decodedBytes, "UTF-8");
这解决了这个问题,可能是因为decodeBytes从未首先进行过Base64编码。
我还发现使用直接RSA,如果我使用2048位密钥,我只能加密最多245个字节。如果我使用1024位密钥则更少。
如果需要使用非对称公钥/私钥加密更大的字符串,那么我需要首先使用对称AES加密字符串,然后使用公共RSA密钥加密AES密钥,并通过网络发送加密的AES密钥和加密的消息。接收方可以使用其私有RSA密钥解密AES密钥。 AES密钥可以在发送代码中随机生成。