• 对称加密


    AES:

    package com.example.wuji.jiami;
    import com.sun.org.apache.xml.internal.security.utils.Base64;
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    /**
     * 对称加密 AES
     */
    public class Aes {
        public static void main(String[] args) throws Exception {
            String jin = "jinxudong";
            //DES加密 只允许密钥是16个字节的
            String key = "1234567890asdfgh";
            String sf = "AES";
            String str = jiami(key, sf, jin);
            System.out.println("AES加密后:" + str);
            str = jiemi(key, sf, str);
            System.out.println("AES解密后:" + str);
        }
        /**
         * 加密
         *
         * @param key     密钥
         * @param jiami   加密算法
         * @param content 加密内容
         * @return
         * @throws Exception
         */
        private static String jiami(String key, String jiami, String content) throws Exception {
            Cipher cipher = Cipher.getInstance(jiami);
            //加密规则
            SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami);
            //加密模式 加密规则
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            //执行加密方法
            byte[] l = cipher.doFinal(content.getBytes());
            String str = Base64.encode(l);
            return str;
        }
        /**
         * 解密
         *
         * @param key     密钥
         * @param jiami   算法
         * @param content 解密内容
         * @return
         * @throws Exception
         */
        private static String jiemi(String key, String jiami, String content) throws Exception {
            Cipher cipher = Cipher.getInstance(jiami);
            //加密规则
            SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami);
            //加密模式 加密规则 解密 DECRYPT
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            //执行解密方法
            byte[] str = Base64.decode(content.getBytes());
            byte[] ss = cipher.doFinal(str);
            return new String(ss);
        }
    }

    DES:

    package com.example.wuji.jiami;
    import com.sun.org.apache.xml.internal.security.utils.Base64;
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    /**
     * 对称加密 DES
     */
    public class Des {
        public static void main(String[] args) throws Exception {
            String jin = "jinxudong";
            //DES加密 只允许密钥是8个字节的
            String key = "12345678";
            String sf = "DES";
            String str = jiami(key, sf, jin);
            System.out.println("DES加密后:" + str);
            str = jiemi(key, sf, str);
            System.out.println("DES解密后:" + str);
        }
        /**
         * 加密
         *
         * @param key     密钥
         * @param jiami   加密算法
         * @param content 加密内容
         * @return
         * @throws Exception
         */
        private static String jiami(String key, String jiami, String content) throws Exception {
            Cipher cipher = Cipher.getInstance(jiami);
            //加密规则
            SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami);
            //加密模式 加密规则
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            //执行加密方法
            byte[] l = cipher.doFinal(content.getBytes());
            String str = Base64.encode(l);
            return str;
        }
        /**
         * 解密
         *
         * @param key     密钥
         * @param jiami   算法
         * @param content 解密内容
         * @return
         * @throws Exception
         */
        private static String jiemi(String key, String jiami, String content) throws Exception {
            Cipher cipher = Cipher.getInstance(jiami);
            //加密规则
            SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), jiami);
            //加密模式 加密规则 解密 DECRYPT
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            //执行解密方法
            byte[] str = Base64.decode(content.getBytes());
            byte[] ss = cipher.doFinal(str);
            return new String(ss);
        }
    }
  • 相关阅读:
    Java面试题(转)
    哪种方式更适合在React中获取数据?
    vue学习之深入响应式原理
    还不会用FindBugs?你的代码质量很可能令人堪忧
    几道大数据面试题(转)
    【Medium翻译】Java抽象类有什么用?
    深入理解Kafka必知必会(上)
    (八十六)c#Winform自定义控件-表格优化(转载)
    IDEA 配置及常用快捷键
    Markdown 复杂公式&常用符号
  • 原文地址:https://www.cnblogs.com/coderdxj/p/14409383.html
Copyright © 2020-2023  润新知