java 中 MD5加密的实例

网友投稿 417 2023-04-01


java 中 MD5加密的实例

java 中 MD5加密的实例

前言:

今天我来学习利用JAVA编程,通过MD5来实现加密,同时实现验证用户登录原理。

主要是 过程:

主要代码如下

下面是 我们老师的代码 更加细节

package techDemo;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import org.junit.Test;

import sun.misc.BASE64Encoder;

public class Md5Demo {

//加密算法类java.security.MessageDigest

@Test//md5加密的核心代码

public void demo1() throws Exception{

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

String pwd="ewi24343423";

byte b1[] = pwd.getBytes();

byte b2[] = md.digest( b1 ); //利用md对象把 明文b1[] 加密成 密文b2[]

//至此,其实md5加密已经完成,可惜它生成的密文全是字节数据,不是我们通常习惯(看得懂)的16进制的数

//因此还要进一步处理---见demo2()演示

System.out.println("len:"+b2.length); //永远是:16 ---md5加密算法中,无论明文数据有多长,密文都是16个字节数据

for(byte b: b2){

//System.out.print(b+" ");

System.out.print((char)b+" ");

}

System.out.println();

}

@Test//把md5生成的密文转换成我们习惯的方式---与前面相比,怪字符少一些,但还不是16进制

public void demo2() throws Exception{

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

String pwd="ewi24343423";

byte b1[] = pwd.getBytes();

byte b2[] = md.digest( b1 ); //利用md对象把 明文b1[] 加密成 密文b2[]

System.out.println("len:"+b2.length); //永远是:16

BASE64Encoder en = new BASE64Encoder();

String pwd2 = en.encode(b2);

System.out.println(pwd2);

}

/*

* demo2()方法的缺点:

* 1. 密文不是我们最习惯的16进制方式

* 2. 所使用的类BASE64Encoder在API中没有,意味着该类是没有公开

* 给我们程序员用的,因此它如果变动了,我们是无话可说的即不稳定的!

* ---不在接口中,官方是可以随便更改

*/

@Test //自己手动写代码,把md5生成的密文转换成 我们最习惯的16进制方式

public void demo3()throws Exception{

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

String pwd="e655656w23";

byte b1[] = pwd.getBytes();

byte b2[] = md.digest( b1 ); //利用md对象把 明文b1[] 加密成 密文b2[]

System.out.println("len:"+b2.length); //永远是:16

//手动写代码,把16个byte数据 转换成 32个 16进制数

String pwd2="";

for(byte i: b2){

String s = Integer.toHexString(i & 0xff); //如果i<16则s只有一位,只有>=16的i转换成的s才是两位

if(s.length()==1){

s ="0"+s; // s ="f"+s;

}

pwd2 +=s;

}

pwd2 = pwd2.toUpperCase();

System.out.println(pwd2.length());

System.out.println(pwd2);

}

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java设计模式之工厂模式实例详解
下一篇:BaseJDBC和CRUDDAO的写法实例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~