这里有新鲜出炉的Java设计模式,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
有的时候因为业务的需要,我们要制作关于密码的修改功能。而关于密码的加密一般都是用MD5,那么这篇文章将介绍如何在Java的后端实现MD5加密,有需要的可以参考借鉴。
前言
在我们开发是要考虑这个功能,当用户忘记密码的情况下,我们需要动态的发给他一个6位的随机密码,通过即时通,短信,微信等。并同时修改数据库中的原密码为这6位的随机密码。让用户再去修改密码。
同时在数据库中的密码必须存为密文,于是需要使用到MD5加密。生成的6位随机密码需要保密,不能在前台处理,只能放在后端。于是我选择放在了控制层中
示例代码
- //传入任何需要加密的文本进行加密
- public static String getMd5(String string) {
- try {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(string.getBytes);
- byte hash = md.digest;
- StringBuffer sb = new StringBuffer;
- int i = 0;
- for (int offset = 0; offset < hash.length; offset++) {
- i = hash[offset];
- if (i < 0) {
- i += 256;
- }
- if (i < 16) {
- sb.append("0");
- }
- sb.append(Integer.toHexString(i));
- }
- return sb.toString;
- } catch(NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
此处使用的是32位的加密,16位与32位的区别是16位取的是32位中间的16位。
- String PASSWORD_ = String.valueOf((int)(Math.random * 1000000));
- if (empService.updateEmpPassword(EMP_ID_, BaseUtils.getMd5(PASSWORD_), operator) == 0) {
- throw new RuntimeException("随机密码生成失败!");
- }
- String xele = "<SendMessage><AM_Name>" + EMP_CODE_ + "</AM_Name><PhoneNum></PhoneNum><UserId></UserId><MessageTxt>您的公文管理系统新密码是:" + PASSWORD_ + "</MessageTxt><SystemName>公文管理系统</SystemName><Type>即时通</Type><Access></Access><Email></Email><IsBack></IsBack><IsEncrypt></IsEncrypt><ISPriority></ISPriority><Ohter1></Ohter1><Ohter2></Ohter2></SendMessage><br />";
然后调用即时通预留接口
- instanceMsgService.AMToMessIFCheck(xele, null, operator);
注意:主要看java后端怎么去做MD5的加密!!
结束语
以上就是关于在Java后端实现MD5加密方法的全部内容,希望这篇文章对大家学习Java能有所帮助,如果有问题可以进行留言交流,谢谢大家对PHPERZ的支持。
来源: http://www.phperz.com/article/17/1110/360124.html