zoukankan      html  css  js  c++  java
  • java的BASE64Encoder,BASE64Decoder加密与解密

    package com.app.common;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    
    /**
    *@DEMO:napp
    *@Author:jilongliang
    *@Date:2013-7-25
    */
    @SuppressWarnings("all")
    public class EDncrypt {
    private static BASE64Encoder encoder = new BASE64Encoder();// 加密
    private static BASE64Decoder decoder = new BASE64Decoder();// 解密
    
    /**
    * 加密文件
    * 
    * @param f
    * @param path
    */
    private static String encryptFile(File f, String path) {
    InputStream in = null;
    OutputStream out = null;
    String key = "";
    try {
    f = new File(path);
    in = new FileInputStream(f);
    out = new ByteArrayOutputStream();
    // System.out.println(f.getAbsolutePath());
    // System.out.println(f.length());
    encoder.encodeBuffer(in, out);
    key = out.toString();
    in.close();
    out.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return key;
    }
    /**
    *解密
    * 
    * @param f
    * @param path
    */
    private static String decryptFile(File f, String path) {
    InputStream in = null;
    OutputStream out = null;
    String key = "";
    try {
    f = new File(path);
    in = new FileInputStream(f);
    out = new ByteArrayOutputStream();
    decoder.decodeBuffer(in, out);
    key = out.toString();
    in.close();
    out.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return key;
    }
    
    
    /**
    * 加密
    * 
    * @param key
    * @return
    * @throws Exception
    */
    public static String encryptBASE64(String inputStr) {
    String value = "";
    try {
    byte[] key = inputStr.getBytes();
    value = encoder.encodeBuffer(key);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return value;
    }
    
    /**
    * 解密
    * 
    * @param key
    * @return
    * @throws Exception
    */
    public static String decryptBASE64(String outputStr) {
    String value = "";
    try {
    byte[] key = decoder.decodeBuffer(outputStr);
    value = new String(key);
    } catch (Exception e) {
    }
    return value;
    }
    }
    可逆的加密:Apache的
    public static String encodePassword(String rawPass,String type) {
            String pass="";
            if(type.toLowerCase().equals("md5")){
                Md5PasswordEncoder md5PasswordEncoder=new Md5PasswordEncoder();
                pass=md5PasswordEncoder.encodePassword(rawPass, null);
            }
            return pass;
    }
    
    public static String encodePassword(String rawPass) {
        return encodePassword(rawPass,"MD5");
    }
    java 加密 Digest EnCrypt 加密与解密
    package digest;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    
    import org.apache.commons.codec.binary.Base64;
    
    public class DigestExample {
    
        public static void main(String[] args) throws Exception {
            //加密内容
            final String content = "hello hello hello";
            /*
             * 单向加密 md5 & sha
             */
            //md5 加密
            MessageDigest md5 = MessageDigest.getInstance("md5");
            byte[] md5SecretStr = md5.digest(content.getBytes());
            System.out.print("md5 加密 : { " + new String(Base64.encodeBase64(md5SecretStr)) + " }
    
    ");
    
            //sha 加密
            MessageDigest sha = MessageDigest.getInstance("sha");
            byte[] shaSecretBytes = sha.digest(content.getBytes());
            System.out.print("sha 加密 : { " + new String(Base64.encodeBase64(shaSecretBytes)) + " }
    
    ");
    
            /*
             * 对称加密 aes & des
             */
            //aes 加密
            KeyGenerator aesKeyGenerator = KeyGenerator.getInstance("aes");
            SecretKey aesSecretKey = aesKeyGenerator.generateKey();
            Cipher aesCipher = Cipher.getInstance("aes");
            aesCipher.init(Cipher.ENCRYPT_MODE, aesSecretKey);
            byte[] aseResultBytes = aesCipher.doFinal(content.getBytes());
            System.out.print("aes 加密 : { " + new String(Base64.encodeBase64(aseResultBytes)) + " }
    
    ");
    
            //aes 解密
            aesCipher.init(Cipher.DECRYPT_MODE, aesSecretKey);
            aseResultBytes = aesCipher.doFinal(aseResultBytes);
            System.out.print("aes 解密: { " + new String(aseResultBytes) + " }
    
    ");
    
    
            //des 加密
            KeyGenerator desKeyGenerator = KeyGenerator.getInstance("aes");
            SecretKey desSecretKey = desKeyGenerator.generateKey();
            Cipher desCipher = Cipher.getInstance("aes");
            desCipher.init(Cipher.ENCRYPT_MODE, desSecretKey);
            byte[] dseResultBytes = desCipher.doFinal(content.getBytes());
            System.out.print("des 加密 : { " + new String(Base64.encodeBase64(dseResultBytes)) + " }
    
    ");
    
            desCipher.init(Cipher.DECRYPT_MODE, desSecretKey);
            dseResultBytes = desCipher.doFinal(dseResultBytes);
            System.out.print("aes 解密: { " + new String(dseResultBytes) + " }
    
    ");
    
        }
    
    }
    
    console run result
    md5 : { ZnptFLLcFU/qw2LdrU1MqA== }
    
    sha : { g52cyhSXeHXr8kcWODkq738OAVk= }
    
    aes 加密 : { pudmyrvBANStqfcDIb7+DFPK+5gPZP/ais6sibTKyIk= }
    
    aes 解密: { hello hello hello }
    
    des : { Nx2RwaJBl5+P2eVb0v+JRVTd8tfwAQQ7KA28n97Ln8E= }
    
    aes 解密: { hello hello hello }
    
    
    rsa 非对称加密
    
    package digest;
    
    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.PrivateKey;
    import java.security.PublicKey;
    
    import javax.crypto.Cipher;
    
    import org.apache.commons.codec.binary.Base64;
    
    
    public class RsaExample {
        public static void main(String[] args) throws Exception {
            final String context = "rsa加密";
    
    
            KeyPairGenerator kpg = KeyPairGenerator.getInstance("rsa");
            KeyPair gkp = kpg.generateKeyPair();
    
            PrivateKey privateKey = gkp.getPrivate();
            PublicKey publicKey = gkp.getPublic();
            byte[] encode1 = privateKey.getEncoded();
            byte[] encode2 = publicKey.getEncoded();
    
            byte[] key1 = Base64.encodeBase64(encode1);
            byte[] key2 = Base64.encodeBase64(encode2);
            System.out.println(new String(key1));
            System.out.println(new String(key2));
            /*System.out.println("privateKey:{"+privateKey+"}");
            System.out.println("publicKey:{" +publicKey+"}");*/
    
    
            Cipher cipher = Cipher.getInstance("rsa");
            cipher.init(1, privateKey);
            byte[] result = cipher.doFinal(context.getBytes());
    
            byte[] signatrue = Base64.encodeBase64(result);
    
            System.out.println("result:{" + new String(signatrue)+"}");
    
            byte[] i = Base64.decodeBase64(signatrue);
            cipher.init(2, publicKey);
            System.out.println(new String(cipher.doFinal(i)));
    
        }
    }
    
    console run result
    
    MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAI+Ktf/bAPnTER4wL+jYwSgjvwg3VU4KRrdvoOipy862ROcJdw9nCGRIyfFpIYFYALY5km0GTbR1cvfB5N47GbEad8OMsMi1JOvNgikp8ofUgFd4arsiD6p6sWd7RswvVfgdFKQmP6Obu9jM5zCZxetaH/b0xK6tBNJJW/wn+zG9AgMBAAECgYAdpaixj6pD7zQ55/n9PcenYrqyF7umwriYapXxeCCAMWVJ0sqkg8NX8zDCi9Q/ws1i1cFIg2TJQPjd804yGELV4MQ886e723O6nfTzlgCcFHNub6s4IIvQczQCRx3BJzro2KAbPFeqV/hDIgaNxlJx0W1UEbQqkBYHH1BkAjXwAQJBAOmcslHLYJe5RWp6wyDjcj9GiQMDgt18vIdsW/MOEBnQeYWE2bwsiE092youoZ7aNPKDoZzoJTEpVUPVLQH0deECQQCdTEh06COqviUlAQPJIYDpDi1qoSvw+07NDsaho7Lpao/F/iq1XgZvH6wKod4EmY3IdX8e0RvcrajMMWm6aj9dAkASAh5M59yeVY3gU25PTrkz34AYV2DzKfZuig/cgK0FEGkNvdv7AYPQUIBglA+pazDBsRv4OH0FeSY1gG1jxTCBAkABfPNCh9+ugdYAH55VjMeXbNbpJ1UvFnGMZxNh/BZ5NtTdXqYwyQ7uhjIud5GOIZXBy7rEI95LnCj4pY8GgHLRAkEA1mP3Z6x42aZaHKQcEuT38/BPBg9OtTZGaWipeGp7dlDuD8XW/NBianft2VqI73GXo7gSn7HDHp5ZhLVhCNsSOA==
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPirX/2wD50xEeMC/o2MEoI78IN1VOCka3b6DoqcvOtkTnCXcPZwhkSMnxaSGBWAC2OZJtBk20dXL3weTeOxmxGnfDjLDItSTrzYIpKfKH1IBXeGq7Ig+qerFne0bML1X4HRSkJj+jm7vYzOcwmcXrWh/29MSurQTSSVv8J/sxvQIDAQAB
    privateKey:{Sun RSA private CRT key, 1024 bits
      modulus:          100798507655562672634382563625239291964945102222464707977557265818850161373345900576705678605564617099559134111187263533690577667029773051561093784895113396514352229224857085774815551784918475310931537765905461572526427050491602207190137661866307492752828388294013838106222346293330945028978188314252819509693
      public exponent:  65537
      private exponent: 20818905345464338263561078188370524376115734679391523676460856464652879813687079210313076057874523659301347930619814748798932805909867830781557982091646774464612734768033397966651666313646610127404321982687308504412645000261745579169493965806942893895422786998315749053429010938321263854313553436041981325313
      prime p:          12235258251843427800322533580271468214768411862644285725616323425147295210732054481178485319627614069545483443675930314214646122186102225213965689240712673
      prime q:          8238363717445509899921811355733496220359326926172197592231787257563498251698094349890806400362388734966369330560689902140965710482536375658188849975803741
      prime exponent p: 943169884009231384519118050071432281322154153075040534138176388053223910228090074902935865766799003301093769282249720728937733025377854368996973649145985
      prime exponent q: 77937432363645210155355341876417407824935268538791255431034501116764101439687787004780505183708149834126508460070307449645219349362536474176069807665873
      crt coefficient:  11228541263870362801929539584646038800421516291723873773379889902535223043030350582050117672514417336396982286570742313855229425370741626261320117750796856}
    publicKey:{Sun RSA public key, 1024 bits
      modulus: 100798507655562672634382563625239291964945102222464707977557265818850161373345900576705678605564617099559134111187263533690577667029773051561093784895113396514352229224857085774815551784918475310931537765905461572526427050491602207190137661866307492752828388294013838106222346293330945028978188314252819509693
      public exponent: 65537}
    result:{XxdVrhgArX5/AnDGGqU2/VGTcrmjcY37SnKxnTR7+5VFaACbj6aSi+S3xyfgu1UHwlDUrpYczCU+ikXrbSQWs9+WGT1CixYrCC04VuxxZ32G4gKLY8Q9Ag904PuTQbA/s/YWuHxfvKykr9r2Epx2wHrZiRKA6eFvVQIQCKzWjvk=}
    rsa加密
  • 相关阅读:
    mybatis 梳理9--别名
    mybatis 梳理8--多个参数 @Param
    mybatis 梳理7--map的使用 (很好用)
    mybatis 梳理6--模糊查询
    mybatis 梳理5-- 增删改查 基于注解 (少)
    mybatis 梳理4--增删改查 基于配置文件(多)
    mybatis 梳理3--搭建环境 小栗子 结合 梳理10 复习
    mybatis 梳理2--代理设计模式 静态代理、动态代理(Proxy) (懵)
    mybatis 梳理1--文档官网、简介、持久化、持久层、持久层框架
    梳理5--核心配置文件pom 基础配置、构建配置、插件(记得!)、区别dependencies 和 dependencyManagement
  • 原文地址:https://www.cnblogs.com/nucdy/p/7803863.html
Copyright © 2011-2022 走看看