Java RSA 加密解密中 密钥保存并读取,数据加密解密并保存读取 问题

RSA加密解密中密钥保存并读取,数据加密解密并保存读取问题,这些密钥,加密数据,解密数据不保存直接用的话加密解密就没有问题(tester.java),如果把加密后的数据保... RSA 加密解密中 密钥保存并读取,数据加密解密并保存读取 问题,这些密钥,加密数据,解密数据不保存直接用的话加密解密就没有问题(tester.java),如果把加密后的数据保存,解密时读取再解密就出错(test.java),哪位大神帮忙弄一下保存名读取的地方,只修改test.java里面我注释的地方
源代码在下面的评论者(alamniyaz)的评论中,大神们帮忙一下,改好了发到1_5_7_0_0_3_2_5_6_4_@_q_q._c_o_m 如果能正确的改了再悬赏50;
源代码在百度云中,http://pan.baidu.com/s/1pJFX30B ,希望大家帮个忙。谢谢
展开
 我来答
568145421
推荐于2017-11-27 · 知道合伙人软件行家
568145421
知道合伙人软件行家
采纳数:1353 获赞数:6756

向TA提问 私信TA
展开全部

帮你完善了下代码。

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.util.Map;

public class Test {
    static String publicKey;
    static String privateKey;

    public Test() throws Exception {
        // TODO Auto-generated constructor stub
        Map<String, Object> keyMap = RSAUtils.genKeyPair();
        publicKey = RSAUtils.getPublicKey(keyMap);
        privateKey = RSAUtils.getPrivateKey(keyMap);

        // 保存密钥,名字分别为publicKey。txt 和privateKey。txt;
        PrintWriter pw1 = new PrintWriter(new FileOutputStream(
                "D:/publicKey.txt"));
        PrintWriter pw2 = new PrintWriter(new FileOutputStream(
                "D:/privateKey.txt"));
        pw1.print(publicKey);
        pw2.print(privateKey);
        pw1.close();
        pw2.close();

        // 从保存的目录读取刚才的保存的公钥,
        String pubkey = readFile("D:/publicKey.txt");// 读取的公钥内容;
        String data = readFile("D:/1.txt"); // 需要公钥加密的文件的内容(如D:/1.txt)
        byte[] encByPubKeyData = RSAUtils.encryptByPublicKey(data.getBytes(),
                pubkey);
        //将加密数据base64后写入文件
        writeFile("D:/Encfile.txt", Base64Utils.encode(encByPubKeyData).getBytes("UTF-8"));
        // 加密后的文件保存在

        String prikey = readFile("D:/privateKey.txt");// 从保存的目录读取刚才的保存的私钥,
        String Encdata = readFile("D:/Encfile.txt");// 刚才加密的文件的内容;
        byte[] encData = Base64Utils.decode(Encdata);
        byte[] decByPriKeyData = RSAUtils.decryptByPrivateKey(encData, prikey);
        // 解密后后的文件保存在D:/Decfile.txt
        writeFile("D:/Decfile.txt", decByPriKeyData);
    }

    private static String readFile(String filePath) throws Exception {
        File inFile = new File(filePath);
        long fileLen = inFile.length();
        Reader reader = new FileReader(inFile);

        char[] content = new char[(int) fileLen];
        reader.read(content);
        System.out.println("读取到的内容为:" + new String(content));
        return new String(content);
    }

    private static void writeFile(String filePath, byte[] content)
            throws Exception {
        System.out.println("待写入文件的内容为:" + new String(content));
        File outFile = new File(filePath);
        OutputStream out = new FileOutputStream(outFile);
        out.write(content);
        if (out != null) out.close();
    }

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub

        new Test();
    }

}

测试结果:

读取到的内容为:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVr9D9hYPD4kS5k86dRm+utyt5XGOSTPwT0YeoBnQmgeISkNsbtUFkY6txyodVl26IM1H5iwJ1jMQ63+lXfZxzNpeA+rHaxmeQ2qI+5ES9AF7G6KIwjzakKsA08Ly+1y3dp0BnoyHF7/Pj3AS28fDmE5piea7w36vp4E3Ts+F9vwIDAQAB
读取到的内容为:锘县ahaha
葛盼江
2018-08-07
知道答主
回答量:23
采纳率:0%
帮助的人:1.8万
展开全部

【实例下载】本文介绍RSA2加密与解密,RSA2是RSA的加强版本,在密钥长度上采用2048, RSA2比RSA更安全,更可靠, 本人的另一篇文章RSA已经发表,有想了解的可以点开下面的RSA文章

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝眯眯
2015-07-04 · TA获得超过457个赞
知道小有建树答主
回答量:513
采纳率:33%
帮助的人:166万
展开全部
getBytes的时候用getBytes("UTF8")试试看呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式