韩震博客|关注于学习java&php与交流

Java 之 BASE64 加密解密

admin 2018年04月12日 Java知识 573 0

背景

在给邮件发送 URL 链接找回密码时,会发送一个链接,像这样

http://localhost:8080/resetpass?sid=c1b55b980db4eb74a4264a92d53cd953&account=saysky

验证原理就是,当用户点击链接,然后请求 控制器里的 resetpass 方法,获得 sid(密钥) 和 account(用户名) 两个参数。根据用户名去数据库中的 “邮件找回密码” 表(mail_retrieve)里寻找记录,获得 mailRetrieve 对象,然后比较 参数中的 sid 和 mailRetrieve.getSid() 即可,当然也可以加一个outtimes 超时时间 字段。

如上链接,sid 是经过 MD5 加密,并且无需解密,只需要比较参数dis和数据库sid是否相等,而account 用户名一定要传过去,目前是直接明文显示,感觉不是特别好,所以这里需要给 accout 也加密一下比较好。然后在 控制器里接受参数的时候,然后在解密即可。

目标是,无需太复杂,肉眼无法识别即可,但求效率高。

 

BASE64 加密解码

代码如下

package com.liuyanzhao.chuyun.util;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

import java.io.UnsupportedEncodingException;

/**

 * @author 言曌

 * @date 2018/2/24 上午11:45

 */

public class Base64Util {

    /**

     * 加密

     * @param str

     * @return

     */

    @SuppressWarnings("restriction")

    public static String encode(String str) {

        byte[] b = null;

        String s = null;

        try {

            b = str.getBytes("utf-8");

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        if (b != null) {

            s = new BASE64Encoder().encode(b);

        }

        return s;

    }

    /**

     * 解密

     * @param s

     * @return

     */

    @SuppressWarnings("restriction")

    public static String decode(String s) {

        byte[] b = null;

        String result = null;

        if (s != null) {

            BASE64Decoder decoder = new BASE64Decoder();

            try {

                b = decoder.decodeBuffer(s);

                result = new String(b, "utf-8");

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

        return result;

    }

    public static void main(String args[]) {

        Long startTime = System.currentTimeMillis();

        String rawString = "loveluoqi";

        String encodedString = encode(rawString);

        String decodedString = decode(encodedString);

        System.out.println(rawString);

        System.out.println(encodedString);

        System.out.println(decodedString);

        Long endTime = System.currentTimeMillis();

        System.out.println("总共耗时毫秒数:" + (endTime - startTime));

    }

}


看到这里如果这篇文章真的帮到你了,不妨打赏一下哦!

以上就是红色火线JAVA加油站整理的关于Java 之 BASE64 加密解密的文章,
希望可以帮到你,如果你有不同的见解可以留言指正哦,避免让别的java小伙伴在走挫折路。
Java基础中一些容易被忽视的语法小细节总结
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信