我正在尝试使用设备上生成的 RSA 密钥解密我的 android 应用程序中的字符串。加密由 php 服务使用我的应用程序提供的公共 rsa 密钥完成。我的问题是解密失败。
我正在执行以下操作:
在 Android 上生成密钥对(使用 KeyPairGenerator.getInstance("RSA"))-> 确定
两个密钥(公钥和私钥)在使用 Base64.encode(pubKey.getEncoded()) 进行“base64”编码后保存到文件中,与私钥相同。-> 好的
当我调用我的 web 服务时,我在 post 变量中传递我的公钥(以 64 为基数)-> OK
Web 服务(一个 php 服务)使用公钥加密一个短字符串,使用 openssl_public_encrypt 函数。加密的字符串被转换为 base64。-> 似乎没问题,该函数不返回 FALSE。
应用程序检索服务的结果,并对其进行解码(Base64.decode())-> OK(我已经检查过,接收到的字节与 openssl_public_encrypt() 函数生成的字节匹配)
最后一件事是解密这个字符串,我正在执行以下操作:-> 不行
密码密码 = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(cryptedBytes);
字符串解密字符串 = 新字符串(解密字节);
System.out.println(decryptedString);
解密的结果与我的原始字符串不匹配。
我错过了什么?