精华内容
下载资源
问答
  • java支持md5盐值加密和des加密。 做项目时,某些模块添加加密功能可以提高用户个人信息安全性,防止信息泄露,其中des支持加密解密,MD5目前只支持加密(多用于用户登录密码验证,所以无需解密展示)。 一、MD5盐值...

    java支持md5盐值加密和des加密。
    做项目时,某些模块添加加密功能可以提高用户个人信息安全性,防止信息泄露,其中des支持加密解密,MD5目前只支持加密(多用于用户登录密码验证,所以无需解密展示)。

    一、MD5盐值加密

    1.在pom文件中导入相关jar包

    		<dependency>
    			<groupId>org.apache.shiro</groupId>
    			<artifactId>shiro-core</artifactId>
    			<version>1.3.2</version>
    		</dependency>
    

    2.编写MD5类

    import org.apache.shiro.crypto.hash.SimpleHash;
    
    /**
     * 加密工具类
     * @author john
     *
     */
    public class MD5 {
    	//加密类型
    	private static String hashName="MD5";
    	//加密次数
    	private static int hashNum=1024;
    	//pwd是需要加密的字符,salt是盐值(自定义),hashNum是加密次数,次数越多越安全
    	public static Object getMD5(String pwd,String salt){
    		Object obj=new SimpleHash(hashName, pwd, salt, hashNum);
    		return obj;
    		
    	}
    
    }
    

    加密方法是静态方法,使用时直接MD5.getMD5(pwd,salt).toString();即可。暂无解密方法。

    二、Base64加密

    1.同样第一步也是导入base相关jar包

    <!-- Base64 -->
    		<dependency>
        		<groupId>commons-codec</groupId>
        		<artifactId>commons-codec</artifactId>
        		<version>1.14</version>
    		</dependency>
    

    2.编写base64类

    import org.apache.commons.codec.binary.Base64;
    
    public class Base64Utils {
        /**
         * 加密
         *
         * @param plainText
         * @return
         */
        public static String encodeStr(String plainText) {
            byte[] b = plainText.getBytes();
            Base64 base64 = new Base64();
            b = base64.encode(b);
            return new String(b);
        }
    
        /**
         * 解密
         *
         * @param encodeStr
         * @return
         */
        public static String decodeStr(String encodeStr) {
            byte[] b = encodeStr.getBytes();
            Base64 base64 = new Base64();
            b = base64.decode(b);
            return new String(b);
        }
        
    }
    

    加密解密的方法同样是静态方法,直接类名.方法名调用即可。

    三、des加密

    这个不需要导jar包,直接使用即可,但代码量较多

    import java.io.IOException;
    import java.security.SecureRandom;
    
    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;
    
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    
    /**
     * DES加密 解密算法
     * 
     */
    public class DesUtil {
    
        private final static String DES = "DES";
        private final static String ENCODE = "GBK"; //设置编码形式,防止乱码
        private final static String defaultKey = "test1234";
    
        /**
         * 使用 默认key 加密
         * 
         */
        public static String encrypt(String data) throws Exception {
            byte[] bt = encrypt(data.getBytes(ENCODE), defaultKey.getBytes(ENCODE));
            String strs = new BASE64Encoder().encode(bt);
            return strs;
        }
    
        /**
         * 使用 默认key 解密
         * 
         */
        public static String decrypt(String data) throws IOException, Exception {
            if (data == null)
                return null;
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] buf = decoder.decodeBuffer(data);
            byte[] bt = decrypt(buf, defaultKey.getBytes(ENCODE));
            return new String(bt, ENCODE);
        }
    
        /**
         * Description 根据键值进行加密
         *
         */
        public static String encrypt(String data, String key) throws Exception {
            byte[] bt = encrypt(data.getBytes(ENCODE), defaultKey.getBytes(ENCODE));
            String strs = new BASE64Encoder().encode(bt);
            return strs;
        }
    
        /**
         * Description 根据键值进行解密
         * 
         */
        public static String decrypt(String data, String key) throws IOException,
                Exception {
            if (data == null)
                return null;
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] buf = decoder.decodeBuffer(data);
            byte[] bt = decrypt(buf, key.getBytes(ENCODE));
            return new String(bt, ENCODE);
        }
    
        /**
         * Description 根据键值进行加密
         * 
         */
        private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
            // 生成一个可信任的随机数源
            SecureRandom sr = new SecureRandom();
    
            // 从原始密钥数据创建DESKeySpec对象
            DESKeySpec dks = new DESKeySpec(key);
    
            // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey securekey = keyFactory.generateSecret(dks);
    
            // Cipher对象实际完成加密操作
            Cipher cipher = Cipher.getInstance(DES);
    
            // 用密钥初始化Cipher对象
            cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
    
            return cipher.doFinal(data);
        }
    
        /**
         * Description 根据键值进行解密
         * 
         */
        private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
            // 生成一个可信任的随机数源
            SecureRandom sr = new SecureRandom();
    
            // 从原始密钥数据创建DESKeySpec对象
            DESKeySpec dks = new DESKeySpec(key);
    
            // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
            SecretKey securekey = keyFactory.generateSecret(dks);
    
            // Cipher对象实际完成解密操作
            Cipher cipher = Cipher.getInstance(DES);
    
            // 用密钥初始化Cipher对象
            cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
    
            return cipher.doFinal(data);
        }
        
    
        public static void main(String[] args) throws Exception {
            String test = "今晚打老虎5.11ca";
            //加密解密
            System.out.println(encrypt(test));
            System.out.println(decrypt(encrypt(test)));
    
        }
    }
    

    静态方法,直接调用

    展开全文
  • Base64加密与解密

    2019-10-17 15:40:43
    Base64加密与解密 Base64是一种直接利用64个可打印字符来表示二进制数据的算法,也是在网络传输总较为常见的一种加密算法。从JDK 1.8 版本开始提供 java.util.Base64 的工具类,同时也提供了两个Base64的内部类实现...

    Base64加密与解密

    • Base64是一种直接利用64个可打印字符来表示二进制数据的算法,也是在网络传输总较为常见的一种加密算法。从JDK 1.8 版本开始提供 java.util.Base64 的工具类,同时也提供了两个Base64的内部类实现数据加密与解密操作

    实现加密解密操作

    public class Base64Learn {
        public static void main(String[] args) {
            String msg = "www.ltq.com";
            String encMsg = new String(Base64.getEncoder().encode(msg.getBytes()));//加密
            System.out.println(encMsg);
            String oldMsg = new String(Base64.getDecoder().decode(encMsg));//解密
            System.out.println(oldMsg);
        }
    }
    

    打印结果为:

    d3d3Lmx0cS5jb20=
    www.ltq.com
    

    由于Base64 属于JDK 的原始实现,所以单纯的加密是不安全的,此时为了获取更加安全的加密操作,可以利用盐值(salt)自定义格式以及多次加密的方式来保证项目中数据的安全

    基于Base64定义复杂加密与解密操作

    package com.ltq.base;
    
    import java.util.Base64;
    import java.util.Scanner;
    
    /**
     * Title:com.ltq.base
     * Description: 描述【基于Base64定义复杂加密与解密操作】
     * Copyright: Copyright (c) 2019
     * Company: LTQ科技
     *
     * @author leitianquan
     * @version 1.0
     * @created 2019/10/17 15:19
     */
    public class BaseLearn02 {
        public static void main(String[] args) {
            String str = StringUtil.encode("tianquan");
            System.out.println(str);
            String str2 = StringUtil.decode(str);
            System.out.println(str2);
            Scanner scanner = new Scanner(System.in);
            String enen = scanner.next();
            String enenc = StringUtil.encode(enen);
            System.out.println("输入的字符串加密后为:" + enenc);
            System.out.println("解密后为:" + StringUtil.decode(enenc));
        }
    
    }
    
    /**
     * @Description: 定义一个字符串操作类,提供字符串的辅助处理功能
     * @Date: 15:21 2019/10/17
     **/
    class StringUtil {
        private static final String SALT = "leitianquan";//公共的盐值
        private static final int REPEAT = 5;//加密次数
    
        /**
         * @Description: 加密处理
         * @Date: 15:26 2019/10/17
         * @Param: [str] 所要加密的字符串
         * @return: java.lang.String
         **/
        public static String encode(String str) {
            String temp = str + "{" + SALT + "}";
            byte data[] = temp.getBytes();//将字符串变为字节数组
            for (int i = 0; i < REPEAT; i++) {
                data = Base64.getEncoder().encode(data);
            }
            return new String(data);
        }
    
        /**
         * @Description: 解密处理
         * @Date: 15:29 2019/10/17
         * @Param: [str] 所要解密的字符串
         * @return: java.lang.String
         **/
        public static String decode(String str) {
            byte[] data = str.getBytes();
            for (int i = 0; i < REPEAT; i++) {
                data = Base64.getDecoder().decode(data);
            }
            return new String(data).replaceAll("\\{\\w+\\}", "");
        }
    }
    
    

    打印结果为:

    VjJ0V2EyTXlSa2hUYmxaVFlXdGFZVlp1Y0ZaTk1XeHlXa1prYWxJeFNrbFphMlJ2WVZkS2NsZFlhRmhXYlUxNFZERkZPVkJSUFQwPQ==
    tianquan
    中国
    输入的字符串加密后为:Vkd4V05HTkhVa1ZXYlVaclZrZDRjMVJYTlc5ak1XeFhZVVpPYWxKdGVGbFViR2h2WVRGWmQxZHFSbUZpUlZVMVZVWkZPVkJSUFQwPQ==
    解密后为:中国
    
    展开全文
  • Base64加密解密

    2019-03-02 19:26:51
    JDK1.8版本以来,新增了加密的API,而加密的算法有很多种,有的能加密后再解密,还有的只能单向加密(MD5),而这里要用到的是加密后还能反解密的Base64 Base64的加密解密核心方法 public byte[] encode(byte[] src) ...

    JDK1.8版本以来,新增了加密的API,而加密的算法有很多种,有的能加密后再解密,还有的只能单向加密(MD5),而这里要用到的是加密后还能反解密的Base64

    Base64的加密解密核心方法

    public byte[] encode(byte[] src) ;–加密
    public byte[] decode(byte[] src) ;–解密

    因为Base64的加密API是公开的,所以如果直接对其加密是不安全的,因此在实际开发的时候,通常都是混入盐值(掺杂一些字符串之类的),然后反复加密几次,甚至是采用两种乃至更多的加密方式来保证数据的安全

    package chenfu.util;
    
    import java.util.Base64;
    
    /**
     * @Author: romantic_ke@163.com
     * @Description:
     * @Date: 2019/3/2 19:08
     */
    public class StringUtil {
    
        //    盐值
        private final static String SALT = "{salt}";
    
        //    加密次数
        private final static Integer TIMES = 3;
    
        /**
         * 加密方法
         *
         * @param pwd
         * @return
         */
        public static String encode(String pwd) {
            pwd += SALT;
            byte p[] = pwd.getBytes();
            for (int i = 0; i < TIMES; i++) {
                p = Base64.getEncoder().encode(p);
            }
            return new String(p);
        }
    
        /**
         * 解密方法
         *
         * @param pwd
         * @return
         */
        public static String decode(String pwd) {
            byte[] bytes = pwd.getBytes();
            for (int i = 0; i < TIMES; i++) {
                bytes = Base64.getDecoder().decode(bytes);
            }
            return new String(bytes).replaceAll("\\{\\w+\\}", "");
        }
    
        public static void main(String[] args) {
            String string = "臣服Romantic";
            String encode = encode(string);
            System.out.println(encode);
            String decode = decode(encode);
            System.out.println(decode);
        }
    }
    
    
    展开全文
  • base64加密你一点也不会陌生,Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。首先介绍介绍...

    生命不止,继续 Go go go !!!

    base64加密你一点也不会陌生,Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。

    首先介绍介绍一下老本行,C++中是如何进行base64加密解密的,直接上代码了:
    base64.h

    #include <string>
    
    #ifndef _BASE64_H_
    #define _BASE64_H_
    
     __declspec(dllexport)  std::string base64_encode(unsigned char const*, unsigned int len);
     __declspec(dllexport)  std::string base64_decode(
    展开全文
  • Base64原理

    2019-09-19 08:56:00
    Base64和MD5都可用于做信息的简单加密,两者的简单差别如下: Base64是一种加解密的。 可逆性。 可以将图片等二进制文件转换为文本文件。 可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符。 MD5 是一种...
  • Base64加密解密 import java.util.Base64; public class YootkDemo { // 李兴华编程训练营:yootk.ke.qq.com public static void main(String[] args) throws Exception { String message = "www.yootk.com" ; //...
  • go 语言中的Base64加密

    2020-11-24 12:00:00
    Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。首先使用Base64编码需要一个含有64个字符的表,这个表由大小写字母、数字、...
  • Base64加密工具

    2019-09-27 18:22:46
    正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密,往往都需要有一些规则,在JDK1.8开始,提供有新的加密处理操作类,Base64处理类--Base64类 在该类之中存在两个内部类:Base64.Base64.Decoder以及Base64....
  • Base64加密和MD5 Hash加密在Shiro框架下的简单用法 一、Base64 1.Base64: Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。 2.Base64的加密和...
  • 加密应用 Base64 和 Md5

    2020-04-13 21:28:46
    Base64 加密方式是双向的 即可以加密 也可以解密 加密后的长度 根据 加密前长度 变化而变化 String str = "I LOVE YOU"; //加密 String string = Base64.encodeToString(str.getBytes()); System.out....
  • MD5和Base64

    千次阅读 2017-06-21 14:10:36
    简述MD5: 全称为message digest algorithm 5(信息摘要算法), 可以进行加密, 但是不能解密, 属于单向加密, 通常用于文件校验Base64: 把任意序列的8位字节描述为一种不易为人识别的形式, 通常用于邮件、http加密....
  • Java常用API之Base64加密与解密 在进行任何语言类库的设计过程之中,除了比较大型的类库结构之外,例如:国际化、正则表达式、字符串等,还会提供很多小类库,简单的理解为它可以完成部分的操作功能,而本文讨论的...
  • Java——加密(java.util.Base64)

    千次阅读 2019-11-24 22:44:30
     Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码是从二进制到字符的过程,可用于...
  • Base64加密与解密使用

    2020-09-07 16:54:04
    1、什么是Base64 Base64是一种直接利用64位可打印字符来表示二进制数据的算法,是一种比较常见的加密算法。JDK1.8版本提供了java.util.Base64的工具类,使用Base64提供的2个内部类进行加解密操作。 数据加密:java...
  • 主要介绍了Python加密方法,结合实例形式总结分析了md5,base64,sha1的简单加密方法,需要的朋友可以参考下
  • Base64Utils 和 DigestUtils的调用 import org.springframework.util.Base64Utils; import org.springframework.util.DigestUtils; //MD5加密 DigestUtils.md5DigestAsHex((内容+盐值).getBytes()) /...
  • day8_base64模块

    2018-03-14 15:58:00
    import base64def base64_data_encode(st): # 这个函数是用来base64加密的 salt = 'JMY12345' new_str = str(st) + salt encode_str = base64.b64encode(new_str.encode()).decode() return encode_strprint(base6.....
  • import java.io....import java.util.Base64; import java.util.Base64.Decoder; import java.util.Base64.Encoder; import java.util.HashMap; import java.util.List; import java.uti...
  • Base64编码解码(附运行实例下载)

    千次阅读 2013-08-08 01:20:30
    1. Base64Utils.java package password; import java.io.UnsupportedEncodingException; /**  * Base64Utils 用于对字符串,或者byte数组编码解码。  *  * Base64要求把每三个8Bit的字节转换为四个6Bit的字节...
  • 一、Base64原理: ● base64的编码都是按字符串长度,以每3个8bit的字符为一组, ● 然后针对每组,首先获取每个字符的ASCII编码, ● 然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节 ● 然后...
  • Base64加密与解密 正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密往往都需要一些规则。 在JDK1.8开始提供有一组新加密处理类,Base64处理,在这个类里面有两个内部类: Base64.Encoder:进行加密处理...
  • xor与base64结合的加密解密函数

    千次阅读 2017-04-16 23:26:27
    //xor与base64加密函数 header('Content-type:text/html;charset=utf-8'); function encrypt($str,$key){ $key=md5($key); $k=md5(rand(0,100));//相当于动态密钥 $k=substr($k,0,8); $tmp=""; for($i=0;$i<s
  • 一、Base64加密 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其实Base64只能算是一个编码算法,对数据内容进行编码来适合传输。标准Base64编码解码无需额外信息即...
  • Base64是一种直接利用64个可打印字符来表示二进制数据的算法,也是在网络传输中较为常见的一种加密算法,从JDK 1.8版本开始提供有java.util.Base64的工具类,并且提供有两个Base64的内部类实现数据加密与解密操作: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,650
精华内容 660
关键字:

base64盐值