美文网首页
RSA解密失败,常见原因

RSA解密失败,常见原因

作者: 炽热冰峰 | 来源:发表于2019-03-26 17:29 被阅读0次

    1 byte[] 与 String之间反复转换导致解密失败

    现象:

    String source = "待加密数据987654321";
    byte[] data = source.getBytes();
    byte[] encodedData = RSAUtils.encryptByPublicKey(data, publicKey);
    System.out.println("加密后的数据: \r\n" + new String(encodedData));
    // 直接解密数据
    byte[] decodedData = RSAUtils.decryptByPrivateKey(encodedData, privateKey);
    System.out.println("解密后的数据: \r\n" + new String(decodedData));
    // 先将加密的数据转换String,再通过String转换为byte[],再解密
    String    encodedDataString = new String(encodedData);
    // 报解密错误
    byte[] decodedData2 = RSAUtils.decryptByPrivateKey(encodedDataString.getBytes(), privateKey);
    System.out.println("解密后的数据2: \r\n" + new String(decodedData2));
    

    分析原因:
    1 由于encodedData是经过加密处理的数据,所以里面包含不可见字符,在转换为String的时候,会出现丢失。(根本原因
    2 new String(encodedData)采用的字符编码有可能是utf-8,有可能是ASCII,有的将八位解释为一个字符,有的将4个八位解释为一个字符。

    相关文章

      网友评论

          本文标题:RSA解密失败,常见原因

          本文链接:https://www.haomeiwen.com/subject/fddnvqtx.html