【问题标题】:Encrypt Content by RSA in Android / Java在 Android / Java 中通过 RSA 加密内容
【发布时间】:2015-07-25 20:29:10
【问题描述】:
public static String encryptByPublicKey(byte[] data, String key)
        throws Exception {

    byte[] keyBytes = decryptBASE64(key);

    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
    Key publicKey = keyFactory.generatePublic(x509KeySpec);

    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
    cipher.init(Cipher.ENCRYPT_MODE, publicKey);

    return new String(cipher.doFinal(data));
}

我有一个公钥,例如 MFWww.........EAAQ==。当我将字符串传递给该参数时,加密的消息是一些未知字符。因此,我怀疑在将键传递给函数之前我应该​​对键做一些事情。但我不知道我怎么能做到。所以看看任何人都可以提供帮助。

谢谢

【问题讨论】:

  • 查看 BouncyCastle 和 Jasypt 库,但我不确定您是否可以在 android 上使用它们

标签: java android encryption rsa public-key


【解决方案1】:

永远永远不会将任意二进制数据传递给String 构造函数。你没有编码 text,你有任意字节。这不是 String 构造函数的用途。

理想情况下,根本不将二进制数据表示为文本 - 但如果您必须这样做,请使用 base64 或 hex,这将用 ASCII 编码任意二进制数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 2015-02-27
    • 1970-01-01
    • 2014-11-24
    相关资源
    最近更新 更多