MD5加密数据java工具类
项目中部署线上,禁止外网环境下明文传输登陆密码,于是通过前端AES加密数据,代码操作解密之后,再对数据进行加密,根据加密后的数据跟数据库的密码进行校验,个人觉得这种方式不合理,但是初期还是可以按要求完成功能
下面是MD5的加密工具类
public class MD5Util {
private static final String MD5 = "MD5" ;
public static void main ( String[ ] args) throws NoSuchAlgorithmException {
String str = new String ( "123456" ) ;
System. out. println ( "原始:" + str) ;
String encryptRes = encryptMD5 ( str) ;
System. out. println ( "加密后:" + encryptRes) ;
}
public static String encryptMD5 ( String str) throws NoSuchAlgorithmException {
MessageDigest md5 = MessageDigest. getInstance ( MD5) ;
char [ ] charArray = str. toCharArray ( ) ;
byte [ ] byteArray = new byte [ charArray. length] ;
for ( int i = 0 ; i < charArray. length; i++ ) {
byteArray[ i] = ( byte ) charArray[ i] ;
}
byte [ ] md5Bytes = md5. digest ( byteArray) ;
StringBuffer hexValue = new StringBuffer ( ) ;
for ( int i = 0 ; i < md5Bytes. length; i++ ) {
int val = ( ( int ) md5Bytes[ i] ) & 0xff ;
if ( val < 16 ) {
hexValue. append ( "0" ) ;
}
hexValue. append ( Integer. toHexString ( val) ) ;
}
return hexValue. toString ( ) ;
}
}
个人不理解MD5数据加密之后,既然被称为不可逆,如果是需要获取数据库的情况下,例如需要从数据库拿到用户的身份证号码,这个时候,数据库存的是MD5加密后的数据,这个时候如何拿到真实的数据呢?暂时还不太懂,目前先记录下这个工具类,后面再研究研究