• JAVA加解密 -- 对称加密算法与非对称加密算法


    对称加密算法:双方必须约定好算法
    DES 数据加密标准:由于不断地被破解 自98年起就已经逐渐放弃使用
    DES算法标准
    DES加密算法运作流程
    AES 目前使用最多的加密方式,官方并未公布加密方式已被破解,替代DES
    AES算法标准

    实现和DES非常接近
    JDK无政策限制权限文件:因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制
    

    这里写图片描述
    这里写图片描述
    构成:口令+盐(特殊的随机数或者字符串)

    非对称加密算法:与门加密算法。
    公钥和私钥分开,使用公钥加密的数据只有它的私钥一致才能解开。
    DH 密钥交换算法
    ・・初始化发送方密钥:KeyPairGenrator(得到keyPair) KeyPair(得到公钥和私钥) PublicKey(公钥)
    初始化接收方密钥:KeyFactory(通过某种规范生成密钥) X509EncodeedKeySpec(按照x509生成编码)
    DHPublicKey DHParameterSpec(使用参数的集合) KeypairGenerator privateKey
    密钥构建:KeyAgreement(提供秘钥协定协议) SecretKey(秘密密钥,生成一个分组的秘密密钥)KeyFactory
    X509EncodeedKeySpec PublicKey
    加密、解密
    Cipher(为加密解密提供功能接口)
    这里写图片描述
    RSA 基于因子分解 目前适用范围最广的非对称加密算法
    唯一广泛接受并实现
    数据加密&数字签名
    公钥加密、私钥解密
    私钥加密、公钥解密
    这里写图片描述

    “`
    //1.//初始化密钥
    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“RSA”);
    keyPairGenerator.initialize(512);
    KeyPair keyPair = keyPairGenerator.generateKeyPair();
    RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
    RSAPrivateCrtKey rsaPrivateCrtKey = (RSAPrivateCrtKey) keyPair.getPrivate();
    System.out.println(“public Key:” + org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPublicKey.getEncoded()));
    System.out.println(“private Key:”+org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPrivateCrtKey.getEncoded()));

            //2.a//私钥加密,公钥解密 -- 加密
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateCrtKey.getEncoded());
            KeyFactory factory = KeyFactory.getInstance("RSA");
            PrivateKey privateKey = factory.generatePrivate(pkcs8EncodedKeySpec);
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE, privateKey);
            byte[] result = cipher.doFinal(str.getBytes());
            System.out.println("私钥加密、公钥解密:"+org.apache.commons.codec.binary.Base64.encodeBase64String(result));
    
            //2.b//私钥加密,公钥解密 -- 解密
            X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
            factory = KeyFactory.getInstance("RSA");
            PublicKey publicKey = factory.generatePublic(x509EncodedKeySpec);
            cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE,publicKey);
            result = cipher.doFinal(result);
            System.out.println("私钥加密、公钥解密:"+new String(result));
    
            //3.a公钥加密、私钥 -- 加密
            x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
            factory = KeyFactory.getInstance("RSA");
            publicKey = factory.generatePublic(x509EncodedKeySpec);
            cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE,publicKey);
            result = cipher.doFinal(str.getBytes());
            System.out.println("公钥加密、私钥 -- 加密:"+org.apache.commons.codec.binary.Base64.encodeBase64String(result));
    
            //3.b公钥加密、私钥 -- 加密
             pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateCrtKey.getEncoded());
             factory = KeyFactory.getInstance("RSA");
             privateKey = factory.generatePrivate(pkcs8EncodedKeySpec);
             cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            result = cipher.doFinal(result);
            System.out.println("公钥加密、私钥 -- 解密:"+new String(result));
    

    “`//其余部分实现方法差不多,就不都贴出来了,下面我放上源码下载地址
    ElGamal 公钥加密算法 BC实现
    和RSA实现方式一样.
    Security.addProvider(new BouncyCastleProvider);
    这里写图片描述
    javaBase64 消息摘要算法加解密 对称算法加解密 非对称算法加解密 数字签名算法源码
    包含Base64 MD家族(MD2 MD4 MD5)DES AES DH RSA DSA ECDSA 算法的加解密方式

    算法实现源码下载地址:http://download.csdn.net/detail/jacxuan/9774737

  • 相关阅读:
    jprofiler配置
    Nginx编译安装
    WebBench的安装与使用
    你经常看到却经常忽视的__init__.py有什么用?
    彻底搞懂Python 中的 import 与 from import
    实现有过期时间的LRU缓存
    实现函数调用结果的 LRU 缓存
    elasticsearch Routing 路由详解
    Elasticsearch _reindex 接口来重新索引数据到新索引,使用新的配置
    浏览器操作elasticsearch别名
  • 原文地址:https://www.cnblogs.com/qwop/p/6637283.html
Copyright © 2020-2023  润新知