小编Mik*_*ike的帖子

使用公钥进行RSA解密

我的Android项目中有一些解密问题.

我收到一个用私钥签名的字符串,我必须用公钥验证(解密)它.我想获得完全相同的结果,如果我用一个PHP函数- openssl_public_decrypt(http://php.net/manual/pl/function.openssl-public-decrypt.php)

我必须在我的Java项目中这样做,所以我可以使用Java库(例如BouncyCastle,或其他什么,任何建议?)

任何想法如何解决这个问题?

好的,这是我的代码.我正在拿这样的公钥

PEMReader reader = new PEMReader(new InputStreamReader(ctx
                .getAssets().open("pubkey.pem")));
        Object obj;
        while ((obj = reader.readObject()) != null) {
             if (obj instanceof RSAPublicKey) {
                pubKey = (RSAPublicKey) obj;
                return pubKey;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我总是毫无问题地得到公钥.

Cipher c = Cipher.getInstance("RSA/NONE/NoPadding", "SC");
c.init(Cipher.DECRYPT_MODE, pubKey);
byte[] result = c.doFinal(data_to_decrypt.getBytes());
Run Code Online (Sandbox Code Playgroud)

结果(将字节转换为字符串后)我得到了 022c06571c6a263b389fcd93159cb311abb880bddf51b7c916dd1ae...

php函数返回的地方 sd8dsa348acvcx87|00454|OK|15000|CDE,这是一个正确的输出.

php java android rsa public-key

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×1

java ×1

php ×1

public-key ×1

rsa ×1