分享

Apache的加密算法和java自带的加密算法

 然并卵书屋 2018-09-03

        最近研究了下加密的操作,自己本身对加密不是很熟悉,看了一下java对加密的一些操作,在这里总结一下。java从1.5之后提供了Base64Encoder和Base64Decoder。为大家用的普遍的方法先MD5加密然后base64编码,代码如下:

01import java.io.UnsupportedEncodingException;
02import java.security.MessageDigest;
03import java.security.NoSuchAlgorithmException;
04 
05import org.apache.commons.codec.binary.Base64;
06import org.apache.commons.codec.digest.DigestUtils;
07 
08import sun.misc.BASE64Encoder;
09 
10public class EncryptUtil {
11    /**
12     * 使用java原生(先MD5加密在base64编码)
13     *
14     * @param str
15     * @return
16     */
17    public static String MD5Encode(String str) {
18        String newString = '';
19        BASE64Encoder base64Encoder = new BASE64Encoder();
20        try {
21            MessageDigest digest = MessageDigest.getInstance('MD5');
22            newString = base64Encoder.encode(digest.digest(str
23                    .getBytes('utf-8')));
24        } catch (NoSuchAlgorithmException e) {
25            e.printStackTrace();
26        } catch (UnsupportedEncodingException e) {
27            e.printStackTrace();
28        }
29        return newString;
30    }
31 
32    /**
33     * 使用Apache的工具类
34     * @param str
35     * @return
36     */
37    public static String MD5Encode2(String str) {
38        String newString = '';
39        try {
40            newString = Base64.encodeBase64String(DigestUtils.md5(str
41                    .getBytes('utf-8')));
42        } catch (UnsupportedEncodingException e) {
43            e.printStackTrace();
44        }
45        return newString;
46    }
47 
48    public static void main(String[] args) {
49        System.out.println(EncryptUtil.MD5Encode('哆啦A梦'));
50        System.out.println(EncryptUtil.MD5Encode2('哆啦A梦'));
51    }
52}

看了下源码,Apache的MD5加密底层用的是java的MessageDigest,使用起来较为方便。当然还对sha算法进行了封装:

01public String encode(String str) {
02        try {
03            Hex.encodeHexString(DigestUtils.md5(str));
04            //查看源码等价于
05            DigestUtils.md5Hex(str);
06             
07            DigestUtils.shaHex(str);
08             
09            Hex.encodeHexString(DigestUtils.sha256(str));
10            //查看源码等价于
11            DigestUtils.sha256Hex(str.getBytes('utf-8'));
12             
13            DigestUtils.sha384Hex(str);
14            DigestUtils.sha512Hex(str);
15        } catch (UnsupportedEncodingException e) {
16            e.printStackTrace();
17        }
18        return str;
19    }
20}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多