欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java实现非对称加密

程序员文章站 2022-05-15 16:59:07
...

对称加密:加密和解密的过程使用的是相同的**

java实现非对称加密

非对称加密

与对称加密不同,非对称加密算法的加密和解密使用不同的两个**.这两个**就是我们经常听到的”公开**”(公钥)和”私有**”(私钥).

公钥和私钥的关系是:

公钥和私钥一般都是成对出现,
如果你的消息使用公钥加密,那么需要该公钥对应的私钥才能解密;
如果你的消息使用私钥加密,那么需要该私钥对应的公钥才能解密.
java实现非对称加密

java实现非对称加密

    public static void main(String[] args) throws Exception {
        //原文
        String txt = "abc";
        System.out.println("需要加密的原始数据"+txt);

        System.out.println();

        //获得**对Map
        Map<String, byte[]> keyMap = getKeyMap();
        //获得公钥
        String publicKeyStr = encryptBASE64(keyMap.get(PUBLIC_KEY));
        System.out.println("公钥\n\r"+publicKeyStr);

        //获得**
        String privateKeyStr = encryptBASE64(keyMap.get(PRIVATE_KEY));
        System.out.println("私钥\n\r"+privateKeyStr);

        //将私钥规范
        PrivateKey privateKey = restorePrivateKey(decryptBASE64(privateKeyStr));

        //将原文更利于私钥加密
        byte[] encodedText = RSAEncode(privateKey, txt.getBytes("UTF-8"));

        //私钥加密后的数据
        String privateResult = byteArrayToHexString(encodedText);
        System.out.println("加密后的256位数据\n\r"+privateResult);

        PublicKey publicKey = restorePublicKey(decryptBASE64(publicKeyStr));
        // 公钥解密
        System.out.println("公钥解密: " + RSADecode(publicKey, hexStringToByte(privateResult)));
    }

运行结果图
java实现非对称加密

具体的代码
https://github.com/liaobaoxin/password/blob/master/src/com/lbx/password/Cryptology.java