在各种应用系统中,如果需要设置账户,那么就会涉及到储存用户账户信息的问题,为了保证所储存账户信息的安全,通常会采用MD5加密的方式来,进行储存。首先,简单得介绍一下,什么是MD5加密。

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述,这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IETF提交。

(一)消息摘要简介

一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。

消息摘要有两个基本属性:

两个不同的报文难以生成相同的摘要

难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要

代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5

(二)对字符串进行加密

/**利用MD5进行加密

* @param str 待加密的字符串

* @return 加密后的字符串

* @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法

* @throws UnsupportedEncodingException

*/

public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{

//确定计算方法

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

BASE64Encoder base64en = new BASE64Encoder();

//加密后的字符串

String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));

return newstr;

}

调用函数:

String str="0123456789"

System.out.println(EncoderByMd5(str));

输出:eB5eJF1ptWaXm4bijSPyxw==

(三)验证密码是否正确

因为MD5是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。

/**判断用户密码是否正确

*@paramnewpasswd 用户输入的密码

*@paramoldpasswd 数据库中存储的密码--用户密码的摘要

*@return*@throwsNoSuchAlgorithmException

*@throwsUnsupportedEncodingException*/

public boolean checkpassword(String newpasswd,String oldpasswd) throwsNoSuchAlgorithmException, UnsupportedEncodingException{if(EncoderByMd5(newpasswd).equals(oldpasswd))return true;else

return false;

}

md5 java 实现_MD5加密的Java实现相关推荐

  1. (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通

    一.注意要点 1:输入字符串的的编码双方保持统一,如:UTF8: 2:HASH计算输出结果 byte[] 数组转String 时,编码要统一,如:转16进制小写字符串.当然也可以转Base64. 3: ...

  2. java 文件进行加密解密,java 对文件加密解密,该如何解决

    java 对文件加密解密 本帖最后由 Hong_1993 于 2014-09-03 10:51:35 编辑 我现在想做一个基于spring mvc 模式的 实现对  文件或目录文件   的加解密(de ...

  3. java 3des_如何用Java进行3DES加密解密 java实现3des加密解密教程

    3des,全称为3DESede或TripleDES,中文解释为是三重数据加密,用户可以通过通过对DES算法进行改进,针对每个数据块进行三次DES加密,下面小编为你带来java实现3des加密解密教程! ...

  4. java md5 源码_MD5加密 Java源代码

    public classMD5_Encoding {//RFC1321中定义的标准4*4矩阵的常量定义. static final int S11 = 7, S12 = 12, S13 = 17, S ...

  5. 3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB

    昨天帮同事解决了一个接口加密的算法,同事是个小姑娘,不懂,所以老大派我协助她,所以我为了不在姑凉面前掉面子~~火速解决它... 甲方是电信,JAVA写的接口,我一听头就大了,大家都知道~~PHP在加密 ...

  6. java对称加密,java异或加密,Java高性能对称加密

    学过网络安全的可能知道加密可分为对称加密与非对称加密,比如大名鼎鼎的ssh.非对称加密有RSA,sm9等,对称加密有DES,sm4算法等,但是计算机基础比较扎实的可能知道一个值a与值b异或操作2次后可 ...

  7. java .net des_DES加密解密 JAVA与.NET互通程序代码

    JAVA版本 import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFacto ...

  8. 3des加密 java php_php 3des加密 兼容JAVA 多么痛的领悟呀

    最近和别人做接口用到SOCKET TCP/IP方式 其中需要对账号和密码进行3DES加密 对方提供了一个加密比对的软件和JAVA的实现代码 并且给了我们一个长度为32位的密钥 这边需要用PHP来实现! ...

  9. mysql数据库md5密码替换_MD5 加密的密码在数据库重置

    如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办呢? 1. oracle数据库,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( i ...

最新文章

  1. 阿里公开招募鉴黄师,日薪1000元,还送硬盘和网盘会员?!
  2. ECCV2020最佳论文 | 全面解析光流计算模型RAFT
  3. python+opencv图像拼接-python opencv 图像拼接的实现方法
  4. 里程碑!SpaceX 载人首飞发射成功,马斯克填补美国载人飞行近十年空白
  5. tomcat jar包_tomcat学习|tomcat中的类加载器
  6. g30u盘启动 中科曙光1620_I620-G30
  7. tomcat 启动项目 页面文字乱码_项目通过tomcat部署到服务器,请求数据页面中文乱码问题...
  8. 深度学习 《梯度消失和梯度爆炸》
  9. Django学习入门步骤 教程步骤 python
  10. tensorflow随笔——LeNet网络
  11. 【sklearn第十七讲】特征选择
  12. MySQL命令行登录数据库
  13. 测试人如何快速晋升为月薪过万的软件测试工程师?
  14. IR2104全桥驱动的自举问题
  15. java方面图形/图像处理
  16. centos格式化优盘命令_Centos7 格式化分区并挂载
  17. 2015秋季腾讯【技术运营】岗位———在线笔试总结
  18. 蔷薇灵动或成为云安全领域“独角兽”?
  19. 宾得的宾干微距镜头DA35mm
  20. Android开发需要学什么,技术实现

热门文章

  1. html + js 实现电子时间
  2. 浦东搬场公司搬家风水注意事项
  3. Android 锁屏后Service服务保活(支持9.0)
  4. IOS小组件(4-2):创建可配置小组件(动态修改配置数据)
  5. 数据标注面试技巧,你都知道吗
  6. 程序员都秃顶?Python创始人笑了,养生还得学这门语言
  7. 前端转安卓开发!妈妈再也不用担心我的面试,满满干货指导
  8. 计算机等级考试四级网络工程师真题,全国计算机等级考试四级网络工程师笔试真题...
  9. 中文垂直搜索引擎、行业搜索引擎大全
  10. CST入门——边界条件Boundary的选择与设置