java 使用md5_java中如何使用MD5进行加密
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于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是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。
/**判断用户密码是否正确
* @param newpasswd 用户输入的密码
* @param oldpasswd 数据库中存储的密码--用户密码的摘要
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException{
if(EncoderByMd5(newpasswd).equals(oldpasswd))
return true;
else
return false;
}
PS:关于加密技术,本站还提供了如下加密工具供大家参考使用:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java 使用md5_java中如何使用MD5进行加密相关推荐
- [译] 最佳安全实践:在 Java 和 Android 中使用 AES 进行对称加密
原文地址:Security Best Practices: Symmetric Encryption with AES in Java and Android 最佳安全实践:在 Java 和 Andr ...
- java web项目中对数据库用户名密码加密的一种解决方案
原文路径:https://blog.csdn.net/u010463032/article/details/7900906 我们使用的项目经常是这个样子的: <bean id="dat ...
- oracle中md5算法,oracle数据库中存储过程使用MD5算法加密
一.技术点 1. DBMS_OBFUSCATION_TOOLKIT.MD5 DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFU ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- JAVA中简单的MD5算法——MD5Utils
文章目录 MD5信息摘要算法 Java中简单的MD5加密类MD5Utils 今日推歌 MD5信息摘要算法 MD5(Message Digest) 它是一种哈希算法,不是一种加密算法,任何长度的任意内容 ...
- java中使用MD5进行加密
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉. (一)消 ...
- java程序中用户名和密码_在Java应用程序中使用密码术
java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...
- 在Java应用程序中使用密码学
这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 . 这些服务可以通过特定于 ...
- 【java】java 理解JDK中UUID的底层实现
1.概述 先看这个:可笑,你竟然不知道 Java 如何生成 UUID 转载:https://www.cnblogs.com/throwable/p/14343086.html 2.前提 UUID是Un ...
最新文章
- Jenkins插件之环境变量插件EnvInject
- VTK:在多面体数据上使用裁剪和封盖用法实战
- android context.java_Android / Java类范围和Context
- 吉林大学计算机科学与技术学院王欣,应用改进迭代最近点方法的点云数据配准...
- mysql导入数据load data infile用法整理
- linux网络编程之sockaddr_in和in_addr区别
- java web源代码_检测Java Web应用程序而无需修改其源代码
- LeetCode 83. 删除排序链表中的重复元素(链表)
- 64位MinGW和MSYS的安装
- JDK 和 tomcat 安装 配置
- 第六章 使用ADO.NET查询和操作数据
- Silverlight使用WCF实现数据通信
- POJ2074 Line of Sight
- MySQL(7)-----常用约束
- 语音信号的LPC特征提取
- 【论文翻译】InsetGAN :基于多个stylegan2-ada生成器拼接的全身人像生成(2203.InsetGAN for Full-Body Image Generation)
- 单链表的整表创建(头结点版)
- PC端和移动端自适应问题解决方法
- PySide2 环境安装
- WordPress码支付支付插件 WordPress付费阅读查看插件 付费下载插件