读书人

Java中RSA非对称密钥加解密施用示例

发布时间: 2012-09-10 22:20:12 作者: rapoo

Java中RSA非对称密钥加解密使用示例

一、简介:
RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法。

二、RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表

三、使用方式:

① 假设A、B机器进行通信,已A机器为主;

② A首先需要用自己的私钥为发送请求数据签名,并将公钥一同发送给B;

③ B收到数据后,需要用A发送的公钥进行验证,已确保收到的数据是未经篡改的;

④ B验签通过后,处理逻辑,并把处理结果返回,返回数据需要用A发送的公钥进行加密(公钥加密后,只能用配对的私钥解密);

⑤ A收到B返回的数据,使用私钥解密,至此,一次数据交互完成。

四、代码示例:

  1. 第一步获取私钥,为签名做准备。
    /**     * 读取公钥cer     * @param path .cer文件的路径  如:c:/abc.cer     * @return  base64后的公钥串     * @throws IOException     * @throws CertificateException     */    public static String getPublicKey(String path) throws IOException,    CertificateException{        InputStream inStream = new FileInputStream(path);        ByteArrayOutputStream out = new ByteArrayOutputStream();        int ch;        String res = "";        while ((ch = inStream.read()) != -1) {            out.write(ch);        }        byte[] result = out.toByteArray();        res = Base64.byteArrayToBase64(result);        return res;    }


  2. 附上所有代码: 点击下载
本文转自:霍森博客:http://www.huosen.net/archives/124.html

读书人网 >编程

热点推荐