zoukankan      html  css  js  c++  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("公钥
    
    "+publicKeyStr);
    
            //获得密钥
            String privateKeyStr = encryptBASE64(keyMap.get(PRIVATE_KEY));
            System.out.println("私钥
    
    "+privateKeyStr);
    
            //将私钥规范
            PrivateKey privateKey = restorePrivateKey(decryptBASE64(privateKeyStr));
    
            //将原文更利于私钥加密
            byte[] encodedText = RSAEncode(privateKey, txt.getBytes("UTF-8"));
    
            //私钥加密后的数据
            String privateResult = byteArrayToHexString(encodedText);
            System.out.println("加密后的256位数据
    
    "+privateResult);
    
            PublicKey publicKey = restorePublicKey(decryptBASE64(publicKeyStr));
            // 公钥解密
            System.out.println("公钥解密: " + RSADecode(publicKey, hexStringToByte(privateResult)));
        }

    运行结果图
    这里写图片描述

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

  • 相关阅读:
    服务器上往Mongo导入json文件里的数据
    在Flask蓝图中使用动态URL前缀
    python 的 optparser库
    lowB 三人组
    Linux基础介绍
    html的q标签、blockquote标签
    单冒号伪元素和双冒号伪元素
    CSS中的伪元素选择器
    CSS中的选择器
    CSS中的关系选择器
  • 原文地址:https://www.cnblogs.com/aotemanzhifu/p/9192369.html
Copyright © 2011-2022 走看看