java中使用MD5进行加密 BASE64Encoder 编码

时间:2022-02-23 20:28:32

原文地址:http://www.cnblogs.com/weiwangnuanyang/articles/4326336.html

java中使用MD5进行加密

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

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

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

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

(二)对字符串进行加密

java中使用MD5进行加密 BASE64Encoder  编码    /**利用MD5进行加密
java中使用MD5进行加密 BASE64Encoder  编码     * @param str  待加密的字符串
java中使用MD5进行加密 BASE64Encoder  编码     * @return  加密后的字符串
java中使用MD5进行加密 BASE64Encoder  编码     * @throws NoSuchAlgorithmException  没有这种产生消息摘要的算法
java中使用MD5进行加密 BASE64Encoder  编码     * @throws UnsupportedEncodingException  
java中使用MD5进行加密 BASE64Encoder  编码     */
java中使用MD5进行加密 BASE64Encoder  编码    public String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{
java中使用MD5进行加密 BASE64Encoder  编码        //确定计算方法
java中使用MD5进行加密 BASE64Encoder  编码        MessageDigest md5=MessageDigest.getInstance("MD5");
java中使用MD5进行加密 BASE64Encoder  编码        BASE64Encoder base64en = new BASE64Encoder();
java中使用MD5进行加密 BASE64Encoder  编码        //加密后的字符串
java中使用MD5进行加密 BASE64Encoder  编码        String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
java中使用MD5进行加密 BASE64Encoder  编码        return newstr;
java中使用MD5进行加密 BASE64Encoder  编码    }

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

java中使用MD5进行加密 BASE64Encoder  编码    /**判断用户密码是否正确
java中使用MD5进行加密 BASE64Encoder  编码     * @param newpasswd  用户输入的密码
java中使用MD5进行加密 BASE64Encoder  编码     * @param oldpasswd  数据库中存储的密码--用户密码的摘要
java中使用MD5进行加密 BASE64Encoder  编码     * @return
java中使用MD5进行加密 BASE64Encoder  编码     * @throws NoSuchAlgorithmException
java中使用MD5进行加密 BASE64Encoder  编码     * @throws UnsupportedEncodingException
java中使用MD5进行加密 BASE64Encoder  编码     */
java中使用MD5进行加密 BASE64Encoder  编码    public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, UnsupportedEncodingException{
java中使用MD5进行加密 BASE64Encoder  编码        if(EncoderByMd5(newpasswd).equals(oldpasswd))
java中使用MD5进行加密 BASE64Encoder  编码            return true;
java中使用MD5进行加密 BASE64Encoder  编码        else
java中使用MD5进行加密 BASE64Encoder  编码            return false;
java中使用MD5进行加密 BASE64Encoder  编码    }

java中使用MD5进行加密 BASE64Encoder 编码的更多相关文章

  1. java中使用MD5进行加密

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

  2. Java 中使用MD5方法加密密码

    prequisites 导入包 import java.security.MessageDigest;

  3. Java中使用RSA算法加密

    Java中使用RSA算法加密 概述 RSA加密算法是一种非对称加密算法 RSA加密的方式 使用公钥加密的数据,利用私钥进行解密 使用私钥加密的数据,利用公钥进行解密 RSA是一对密钥.分别是公钥和私钥 ...

  4. java中使用MD5加密技术

    在项目中经常会对一些信息进行加密,现在常用的信息加密技术有:MD5.RSA.DES等,今天主要说一下,md5加密,以及如何在java代码根据自己的业务需求使用md5. MD5简介: MD5即Messa ...

  5. JAVA中使用MD5加密实现密码加密

    1.新建Md5.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package c ...

  6. java中使用MD5加密的算法

    MD5,全名Message Digest Algorithm 5,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.以下是JAVA语言中使用MD5加密的工具 ...

  7. Java中使用MD5加密的简单实现

    import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorith ...

  8. 在Java中使用MD5和BASE64

    MD5: 在上一篇<Servlet的学习之Session(5)>中,为了能使获取的所有随机数都能有相同的位数,我们采用MD5获取随机数的消息摘要(或称数据指纹.数据摘要等等). MD5可以 ...

  9. &period;NET和JAVA中BYTE的区别以及JAVA中&OpenCurlyDoubleQuote;DES&sol;CBC&sol;PKCS5PADDING” 加密解密在&period;NET中的实现

    场景:java 作为客户端调用已有的一个.net写的server的webservice,输入string,返回字节数组. 问题:返回的值不是自己想要的,跟.net客户端直接调用总是有差距 分析:平台不 ...

随机推荐

  1. 统计fastq文件中读段的数量

    mycount=`cat SRR108114_new_1.fastq | wc -l` echo 'Number of clean reads, SRR108114_new_1.fastq: '$(( ...

  2. BroadcastReceiver接收系统广播消息

    Android常用的广播Action常量: ACTION_TIME_CHANGED:系统时间被改变. ACTION_DATE_CHANGED:系统日期被改变. ACTION_TIMEZONE_CHAN ...

  3. 文本溢出、垂直外边距合并、BFC、hasLayout

    今天学习文本溢出,又遇到了一些小问题,先上图: 关于文本溢出推荐:http://www.cnblogs.com/yzg1/p/5089534.html 从里面学习到单行文本和多行文本溢出, overf ...

  4. cf445A DZY Loves Chessboard

    A. DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input stand ...

  5. for 循环语句

    for循环写在<script></script>里面. for(初始条件:循环条件:状态改变){循环内容} 关键词:break:结束此次循环,continue:跳过此次循环,继 ...

  6. 拯救安卓手机的数据(无法进入系统只能打开recovery)

    这里不得不赞一个谷歌的开放,如果不是这样读取数据就很糟糕了,记得一千带着我的mac本子到苹果店,那个所谓的“天才”就说苹果的数据无法读取,我了个艹,为了避免丢失你必须得准备一个TM.好了废话不多说,进 ...

  7. SpringCloud与Consul集成实现负载均衡

    一.背景 SpringCloud微服务目前比较流行,其中大都在使用的服务注册与发现是Eureka,最近研究了Consul的集群搭建,现使用Consul实现服务的负载均衡.其主要拓扑结构如下: 二.Co ...

  8. 移植vsftpd到arm linux

    vsftpd即very secure FTP daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux.BSD. ...

  9. Trailing Loves &lpar;or L&&num;39&semi;oeufs&quest;&rpar; CodeForces - 1114C &lpar;数论&rpar;

    大意: 求n!在b进制下末尾0的个数 等价于求n!中有多少因子b, 素数分解一下, 再对求出所有素数的最小因子数就好了 ll n, b; vector<pli> A, res; void ...

  10. 如何在Linux中统计一个进程的线程数(转)

    方法一: /proc proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数. /proc 目录以可读文本文件形式输出,提供现有进程和系统硬件相关的信息如 CPU ...