密码加密技术(MD5)

1.MD5概念

md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。MD5由MD4MD3、MD2改进而来,主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的加密保护领域。

md5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。文件的md5类似于人的指纹,在世界上是独立无二的,如果任何人对文件做了任何改动,其md5的值也就是对应的“数字指纹”都会发生变化。

1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

2.代码实例

创建工具类

public class MD5Utils {

    public static String str2MD5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException {

        str += "@fdki11234568#fjen";
        byte[] digest = null;
        MessageDigest md5 = MessageDigest.getInstance("md5");
        digest = md5.digest(str.getBytes("utf-8"));

        //16表示转换为16进制
        String md5str = new BigInteger(1,digest).toString(16);
        return md5str;
    }

//创建mian方法,进行测试
  /*  public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException {
        System.out.println(str2MD5("123456"));
    }*/
}

在service进行密码加密处理

public class UserInfoServiceImpl implements UserInfoService {
    @Override
    public UserInfo login(String loginName, String password) throws SQLException, UnsupportedEncodingException, NoSuchAlgorithmException {
        //登录密码加密处理
        password = MD5Utils.str2MD5(password);
        UserInfoDao userInfoDao = new UserInfoDaoImpl();
        UserInfo userInfo = userInfoDao.login(loginName, password);
        return userInfo;
    }

    @Override
    public int register(UserInfo userInfo) throws SQLException, UnsupportedEncodingException, NoSuchAlgorithmException {
        //注册密码加密
        String pass = userInfo.getPassword();
        pass = MD5Utils.str2MD5(pass);
        userInfo.setPassword(pass);
        UserInfoDao userInfoDao = new UserInfoDaoImpl();
        int i = userInfoDao.register(userInfo);
        return i;
    }
}

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值