java中使用MD5进行加密(转)

摘要:
在各种应用系统的开发中,经常需要存储用户信息,用户密码需要存储在许多地方。将用户密码直接存储在服务器上显然是不安全的。本文简要介绍了工作中常用的MD5加密算法,希望能对其他加密算法有所借鉴。消息摘要是一种与消息身份验证代码结合使用以确保消息完整性的技术。它主要使用单向哈希函数算法,可以用来验证消息的完整性,并通过哈希密码直接以文本形式保存。目前,广泛使用的算法有MD4、MD5、SHA-1。

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

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

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

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

 配置以下代码的时候可能会报错

报错:BASE64Encoder cannot be resolved to a type

解决方法:http://blog.csdn.net/mr_leee/article/details/53081992

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

public class MD5 {
      /**利用MD5进行加密
     * @param str  待加密的字符串
     * @return  加密后的字符串
     * @throws NoSuchAlgorithmException  没有这种产生消息摘要的算法
     * @throws UnsupportedEncodingException  
     */
    public static 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;
    }
    /**判断用户密码是否正确
     * @param newpasswd  用户输入的密码
     * @param oldpasswd  数据库中存储的密码--用户密码的摘要
     * @return
     * @throws NoSuchAlgorithmException
     * @throws UnsupportedEncodingException
     */
    public static boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException{
        if(EncoderByMd5(newpasswd).equals(oldpasswd))
            return true;
        else
            return false;
    }
    public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        String str="0123456789";
        System.out.println(EncoderByMd5(str));
        System.out.println(checkpassword("0123456789","eB5eJF1ptWaXm4bijSPyxw=="));
    }
}

运行结果:

eB5eJF1ptWaXm4bijSPyxw==
true

原文链接:https://www.cnblogs.com/weiwangnuanyang/articles/4326336.html

免责声明:文章转载自《java中使用MD5进行加密(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP 网页快照美国会计准则 Generally Accepted Accounting Principles (GAAP) 与 中国会计准则下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

计算同比和环比增长率

      今天做的项目中,遇到一个计算同期环比和上期环比的计算并显示出来。这是用ssm框架   代码示例:    @RequiresPermissions("analysis:analysis:smartSearch") @RequestMapping(value = "/analysis/analysis/smartSearch") p...

SparkWriteToHFile

1. HFile的LoadIncrement卡住   原来是因为权限,我一直以为,load函数之后是要删除文件的,但是hdfs://slave1:8020/test/info文件夹所有的是只读权限,而且考出来附加到HFile的时候可能也需要改文件,但是权限不够,所以导致卡在了那个地方。 2.df.rdd明明有值,为什么没有执行到map呢?   没有触发,...

DATASNAP REST WEBSERVICES中间件如何跨平台使用

准备使用DELPHI开发移动设备开发的朋友对DATASNAP REST中间件不可不了解。 DATASNAP REST新型WEBSERVICES中间件使用的通信协议和数据封装格式: 使用HTTP通信协议,HTTP协议哪个平台都支持;使用JSON作为数据的封装格式,几乎所有的开发语言都可以解析JSON数据。 REST的目的就是通过简单的URL来完成对中间层远程...

WPF多语言化的实现

  Metro插件系统系列就暂时停一下,这次我们讨论一下WPF的资源本地化实现,主要用到的:CultureInfo,ResourceManger,MarkupExtension,RESX文件,这些都是.NET框架提供的。 项目结构: 运行结果: 可在程序运行时,实时切换语言 CultureInfo   CultureInfo类表示有关特定区域性的信息...

消息队列的常见问题

消息队列的常见问题 1.消息丢失怎么办?(消息的可靠性传输) 消息的丢失可能会出现在三个地方: RabbitMQ消息中间件: (1)生产者弄丢数据 生产者将数据发送到RabbitMQ的时候,可能数据就在半路给搞丢了,因为网络啥的问题,都有可能。怎么解决? 事务:生产者发送数据之前开启RabbitMQ事务(channel.txSelect),然后发送消息,如...

C# 调用Java的WebService的3种方式

C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用 关于soapheader调用,可以参考 C#调用Java的WebService添加SOAPHeader验证1.问题描述 调用的Java的webservice string Invoke(string func, string r...