base64加盐算法

package com.rd.p2p.common.util;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import com.rd.p2p.common.util.code.BASE64Decoder;
import com.rd.p2p.common.util.code.BASE64Encoder;

/**
 * base64加盐算法
 * 
 */
public class SaltUtil {
    
    /**
     * 字符串Base64位加密
     * @param str
     * @return
     */
    public static Map<String, Object> base64Encode(String string) {
        Map<String, Object> data = new HashMap<String, Object>();
        // 生成6位随机数
        String salt = getSalt();
        // 重新封装
        String str = string + salt;
        // base64加密
        BASE64Encoder encoder = new BASE64Encoder();
        String result = encoder.encode(str.getBytes());
        data.put("result", result);
        data.put("salt", salt);
        return data;
    }

    /**
     * 字符串Base64位解密
     * @param str
     * @return
     * @throws IOException
     */
    public static String base64Decode(String str, String salt) {
        try {
            if (StringUtil.isNotBlank(str)) {
                BASE64Decoder decoder = new BASE64Decoder();
                String string = decoder.decodeStr(str);
                String result = string.replaceAll(salt, "");
                return result;
            } else {
                return null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
    
    private static String getSalt() {
        String[] ValidStr={"0","1","2","3","4","5","6","7","8","9",
                   "a","b","c","d","e","f","g","h","i","j","k","l","m","n","p","q","r","s","t","u","v","w","x","y","z"};
        int number=ValidStr.length;
        String salt = "";
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            String rand = String.valueOf(ValidStr[random.nextInt(number)]);
            salt += rand;
        }
        return salt;
    }
}
这里采用随机6位字符串+需要加密的字符串生成一条新的字符串,然后对该字符串进行base64加密(加密工具类可以参考我写的关于base64的工具类),将加密后的字符串和salt存到数据库中,需要时再进行解密操作。如果是密码等可以采用MD5进行加密,防止数据库密码泄漏。

猜你喜欢

转载自blog.csdn.net/A___B___C/article/details/82460566