在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
    一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。

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

  1. 两个不同的报文难以生成相同的摘要
  2. 难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要

代表:美国国家标准技术研究所的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;
    }

java中使用MD5进行加密相关推荐

  1. java中使用MD5进行计算摘要

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

  2. java对密码进行加密的方法_如何在JAVA中使用MD5加密对密码进行加密

    如何在JAVA中使用MD5加密对密码进行加密 发布时间:2020-11-25 17:12:40 来源:亿速云 阅读:118 作者:Leah 本篇文章为大家展示了如何在JAVA中使用MD5加密对密码进行 ...

  3. java中的md5加密_java中的MD5加密

    java中的MD5加密 2016-01-22 09:07:00 admin 原创 1144 摘要:java中的MD5加密 /** * * md5加密 * @author LiuJiawan * @da ...

  4. java中md5加密和解密_如何在java中实现md5加密和解密

    如何在java中实现md5加密和解密 关注:273  答案:1  mip版 解决时间 2021-01-19 20:37 提问者精神疯裂 2021-01-19 05:36 如何在java中实现md5加密 ...

  5. java中字符串 MD5密码的加密与验证

    java中字符串 MD5密码的加密与验证   MD5即Message-Digest Algorithm 5(信息-摘要 算法 5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译 摘要 ...

  6. php md5加密的都是小写,PHP中的md5与Java中的md5加密结果不一致问题

    /** * 获取MD5加密后的字符串 * @param str 明文 * @return 加密后的字符串 * @throws Exception */ public static String get ...

  7. Android+Java中使用Aes对称加密的工具类与使用

    场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...

  8. java中完成md5加密解密_java实现md5加密解密 notNET中加密和解密的实现方法

    java实现md5加密解密 notNET中加密和解密的实现方法 亦或是旅途风光 7-14 1918℃ 22 [ ee21.cn - ASP.NET ] .NET将原来独立的API和SDK合并到一个框架 ...

  9. java中的MD5工具类

    简介:MD5算法. MD5算法是典型的消息摘要算法,它是由MD4,MD3和MD2算法演变而来.. 无论是哪一种MD算法,其原理都是接受一个任意长度的消息并产生一个128位的消息摘要.. 如果把得到的消 ...

最新文章

  1. 智能,万亿维空间中的求解
  2. 查询高考成绩2021一分一段表,一分一段表查询2021 如何查询一分一段表
  3. python classmothed_python函数之classmethod()
  4. boost asio 异步实现tcp通讯
  5. 早起21天,奖你 1000元!
  6. php background-image,css background-image属性怎么用
  7. 系统重构细节回顾——一号专车50天10万行代码
  8. docker启动nginx后挂了_使用docker启动nginx并挂载配置nginx
  9. exec还原oracle,symantec Backup exec 恢复Recovery Oracle 数据库
  10. ps4路由器虚拟服务器,在PC上使用PS4手柄图文教程(附模拟360手柄教程)
  11. 软件测试正交矩阵,正交矩阵在测试用例设计中的应用
  12. 科普 - CAMDS
  13. 多层陶瓷电容器用处_陶瓷电容器作用详解
  14. python爬虫监控平台_scrapy-monitor,实现爬虫可视化,监控实时状态
  15. 认知世界(1)--学与思
  16. 视觉SLAM十四讲学习第二部分(ch7-ch14)
  17. Auto.js网盘下载加打包插件
  18. vs2015编写基本C
  19. Java中动态加载字节码的方法 (持续补充)
  20. 打破Batch Size的玄学!batch size 的设置范围,不必那么拘谨!

热门文章

  1. Lucene 原理分析之-全文检索的一般过程-笔记
  2. lodash源码分析之baseFindIndex中的运算符优先级
  3. 《基于MFC的OpenGL编程》Part 18 Reading objects from the OBJ File Format
  4. bootstrap - navbar
  5. uva 10816 Travel in Desert(简单的好题~两种方法)
  6. html 5 新增标签及简介
  7. 【翻译】Ext JS——高效的编码风格指南
  8. 创业团队如何在低成本的情况下保护网站安全
  9. 【读书笔记】Java基础学习之目录
  10. 【iOS-Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏...