加密:DigestUtils与java MessageDigest

加密:DigestUtils与java MessageDigest

1.使用Spring的DigestUtils

public class StringUtilTest {

    static final String TARGET = "changeme";   


    /*

    * 不可逆算法  MD5

    */ 

    @Test 

    public void Md5() 

    { 

        String str = DigestUtils.md5DigestAsHex(TARGET.getBytes()); 

        System.out.println("md5Hex:    "+str); 

    } 

}

结果为:

md5Hex:     4cb9c8a8048fd02294477fcb1a41191a

缺点为:只提供了MD5的加密算法

2.使用commons-codec

public class UtilTest {

static final String TARGET = "changeme";   


    /*

    * 不可逆算法  MD5

    */ 

    @Test 

    public void Md5() 

    { 

        String str = DigestUtils.md5Hex(TARGET); 

        System.out.println("md5Hex:    "+str); 

    } 

    /*

    * 不可逆算法  SHA1

    */ 

    @Test 

    public void Sha1() 

    { 

        String str = DigestUtils.shaHex(TARGET); 

        print("shaHex:    "+str); 

        str = DigestUtils.sha256Hex(TARGET); 

        print("sha256Hex:  "+str); 

        str = DigestUtils.sha384Hex(TARGET); 

        print("sha384Hex:  "+str); 

        str = DigestUtils.sha512Hex(TARGET); 

        print("sha512Hex:  "+str); 

    } 



    /*

      * 可逆算法  BASE64

      */


    @Test 

    public void Base64() 

    { 

        //加密 

        byte[] b = Base64.encodeBase64(TARGET.getBytes(), true); 

        String str = new String(b); 

        print("BASE64:    "+str); 


        //解密 

        byte[] b1 = Base64.decodeBase64(str); 

        print("解密之后内容为:  "+new String(b1)); 

    } 

    public void print(Object obj) 

    { 

        System.out.println(obj); 

    } 

}

3.java MessageDigest

@Test

public void test()

{

try

{

String password = "12345psw";

//MD5表示加密算法,可以选择其他参数,如SHA-1等

MessageDigest digest = MessageDigest.getInstance("MD5");

//先调用update,再调动digest

digest.update(password.getBytes());

byte[] byteResult = digest.digest();

//因为加密完为字节数组,需要转化为字符串

String result = convertbyte2String(byteResult);

System.out.println(result);

}

catch (NoSuchAlgorithmException e)

{

e.printStackTrace();

}

}

//将字节数组转化为字符串

private String convertbyte2String(byte[] byteResult)

{

char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };

//4位代表一个16进制,所以长度需要变为原来2倍

char[] result = new char[byteResult.length*2];

int index = 0;

for(byte b:byteResult)

{

//先转换高4位

result[index++] = hexDigits[(b>>>4)& 0xf];

result[index++] = hexDigits[b& 0xf];

}

return new String(result);

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. ASCII 编码 ASCII(American Standard Code for Information ...
    s酸菜阅读 12,802评论 0 8
  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 8,213评论 0 7
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 8,254评论 0 14
  • 做企业的人一开始都雄心勃勃,慢慢的越来越没状态,因为,经营不是想象的那么容易! 有梦想的人一开始都激情满满,慢慢的...
    杨雪_1687阅读 1,796评论 0 0
  • 夜光在森森的凤尾上 凝成那一滴两滴 晶莹的心碎的泪迹 万籁忽然如此静寂 唯有风绪低吟细细 可是,可是— 它不能揾干...
    姑射阅读 3,064评论 5 6

友情链接更多精彩内容