在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 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进行加密相关推荐

  1. [译] 最佳安全实践:在 Java 和 Android 中使用 AES 进行对称加密

    原文地址:Security Best Practices: Symmetric Encryption with AES in Java and Android 最佳安全实践:在 Java 和 Andr ...

  2. java web项目中对数据库用户名密码加密的一种解决方案

    原文路径:https://blog.csdn.net/u010463032/article/details/7900906 我们使用的项目经常是这个样子的: <bean id="dat ...

  3. oracle中md5算法,oracle数据库中存储过程使用MD5算法加密

    一.技术点 1. DBMS_OBFUSCATION_TOOLKIT.MD5 DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFU ...

  4. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  5. JAVA中简单的MD5算法——MD5Utils

    文章目录 MD5信息摘要算法 Java中简单的MD5加密类MD5Utils 今日推歌 MD5信息摘要算法 MD5(Message Digest) 它是一种哈希算法,不是一种加密算法,任何长度的任意内容 ...

  6. java中使用MD5进行加密

         在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉. (一)消 ...

  7. java程序中用户名和密码_在Java应用程序中使用密码术

    java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...

  8. 在Java应用程序中使用密码学

    这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 . 这些服务可以通过特定于 ...

  9. 【java】java 理解JDK中UUID的底层实现

    1.概述 先看这个:可笑,你竟然不知道 Java 如何生成 UUID 转载:https://www.cnblogs.com/throwable/p/14343086.html 2.前提 UUID是Un ...

最新文章

  1. Jenkins插件之环境变量插件EnvInject
  2. VTK:在多面体数据上使用裁剪和封盖用法实战
  3. android context.java_Android / Java类范围和Context
  4. 吉林大学计算机科学与技术学院王欣,应用改进迭代最近点方法的点云数据配准...
  5. mysql导入数据load data infile用法整理
  6. linux网络编程之sockaddr_in和in_addr区别
  7. java web源代码_检测Java Web应用程序而无需修改其源代码
  8. LeetCode 83. 删除排序链表中的重复元素(链表)
  9. 64位MinGW和MSYS的安装
  10. JDK 和 tomcat 安装 配置
  11. 第六章 使用ADO.NET查询和操作数据
  12. Silverlight使用WCF实现数据通信
  13. POJ2074 Line of Sight
  14. MySQL(7)-----常用约束
  15. 语音信号的LPC特征提取
  16. 【论文翻译】InsetGAN :基于多个stylegan2-ada生成器拼接的全身人像生成(2203.InsetGAN for Full-Body Image Generation)
  17. 单链表的整表创建(头结点版)
  18. PC端和移动端自适应问题解决方法
  19. PySide2 环境安装
  20. WordPress码支付支付插件 WordPress付费阅读查看插件 付费下载插件

热门文章

  1. 罗升阳:那两年炼就的Android内功修养
  2. FFT—音频频谱设计
  3. Kubernetes:dashboard 搭建(k8s -web端管理)
  4. 分布式、高性能和高可用解决方案 (分布式)
  5. python 实现多继承
  6. 苹果手机电池怎么保养_苹果手机信号差是网络问题还是手机问题
  7. JQuery自定义属性的设置和获取
  8. 大觉寺,鹫峰,农家院 游玩
  9. 简短加密_神经网络训练中回调的简短实用指南
  10. Generative Adversarial Networks(WGAN、SAGAN、BigGAN)