打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Apache的加密算法和java自带的加密算法

        最近研究了下加密的操作,自己本身对加密不是很熟悉,看了一下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}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java中进行加密和解密的方法
签名-Md5加密
string和byte[]的转换 (C#)
如何使用php实现asc、binary以及hex之间的互换
[Python] 字符串与 hex 之间的相互转换
2015《Java语言程序设计》_A卷
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服