账号密码加密方式

  • 加密方式
  1. 单独对账号,密码,时间戳进行位移偏量加密

  2. 加密后得到三个加密字符串,将这三个字符串用&拼接成一个字符串

  3. 将拼接得到的字符串用Base64加密。得到最终加密字符串用于传输

  4. 示例代码:

    import java.io.UnsupportedEncodingException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import org.apache.xerces.impl.dv.util.Base64;
    public class test {
        private static final int deviationNum = 2000;
        /**
         * 解密
         * @param str
         * @return
         */
        public static String[] deStr(String str){
            String enStr = new String(Base64.decode(str));
            String[] strArray = enStr.split("&");
            return strArray;
        }
        /**
         * 加密:位移
         * @param Str
         * @param deviationNum
         * @return
         */
        public static String deviation(String Str,int deviationNum) {
            char[] array = Str.toCharArray();// 获取字符数组
            for (int i = 0; i < array.length; i++) {// 遍历字符数组
                array[i] = (char) (array[i] ^ deviationNum);// 对每个数组元素进行异或运算
            }
            return new String(array);
        }
        /**
         * base64加密
         * @param str
         * @return
         * @throws UnsupportedEncodingException
         */
        public static String base64(String str) throws UnsupportedEncodingException{
            String strBase = new String(Base64.encode(str.getBytes("utf-8")));
            return strBase;
        }
    
        /*
         * 使用例子
         */
        public static void main(String arg[]) throws UnsupportedEncodingException {
            //账号
            String weiyiStr = deviation("zhaowenyu",deviationNum);
            //密码
            String weiyiPass = deviation("&1234567890",deviationNum);
            //时间戳
            String dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(new Date(new Long(1480428796)*1000L));
            String weiyiTime = deviation(dateStr,deviationNum);
    
            //位移加密并拼接
            StringBuffer sb = new StringBuffer().append(weiyiStr).append("&").append(weiyiPass).append("&").append(weiyiTime);
            //拼接之后base64加密
            String base64Str = base64(sb.toString());
            System.err.println("加密后信息:"+base64Str);
            //解密
            String[] deStrArray = deStr(base64Str);
            for(int i=0;i

     

  •  解密方式
  1. 将传输给你的字符串用Base64解码

  2. 得到解码的字符串进行解析出:账号,密码,时间戳

  3. 代码如下:

    String enStr = new String(Base64.decode(str));
    String[] strArray = enStr.split("&");
    	for(int i=0;i

     

 

你可能感兴趣的:(Java)