1 什么是MD5

  信息摘要算法,可以将字符进行加密,每个加密对象在进行加密后都是等长的

  应用场景:将用户密码经过MD5加密后再存储到数据库中,这样即使是超级管理员也没有能力知道用户的具体密码是多少;因为MD5加密后的数据时不能够被解密的

  步骤:

    》获取MessageDigest对象

      MessageDigest md5 = MessageDigest.getInstance("MD5");

      注意:import java.security.MessageDigest;

    》通过MessageDigest对象的方法对字符数组进行加密

      byte [] output = md5.digest(str.getBytes());

      注意:digest方法的参数和返回值都是字符数组类型

    》问题:通过加MD5加密后的数据时乱码,怎么让他变成不是乱码

    》解决:通过Base64算法

2 什么是Base64

  对字符串进行显示处理,即:用常见的64个字符来对字符进行显示,从而有效地避免了乱码问题

  应用场景:防止乱码的产生

  步骤:

    》直接使用Base64类中的静态方法

      str_output = Base64.encodeBase64String(output);

      注意:encodeBase64String方法的参数是字符数组,返回值是字符串

      注意:import org.apache.tomcat.util.codec.binary.Base64;

3 MD5 和 Base64 的综合应用

 package cn.xiangxu.cloudNote.util;

 import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import org.apache.tomcat.util.codec.binary.Base64; /**
* 工具类:MD5加密算法
* @author Administrator
*
*/
public class NoteUtil {
/**
* MD5加密算法,实现将一个字符串进行MD5加密,然后用64个常见的字符进行显示
* @param src 待加密的字符串
* @return 返回一个字符串,这个字符串是加密后进过base64处理的结果
*/
public static String md5(String src) {
try {
// 创建MessageDigest对象
MessageDigest md = MessageDigest.getInstance("MD5");
// 利用MessageDigest对象的方法对字符数组进行加密
byte [] output = md.digest(src.getBytes());
// 将加密后的字符数组转换成字符串后输出
// return new String(output); // 利用base64对加密数据进行处理(即:利用基本的64个字符来显示加密后的数据,并将其转化成字符串)
String ret = Base64.encodeBase64String(output);
return ret;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new Md5Exception("加密失败", e);
}
// return src; // 对异常进行抛出后就不能够执行到这行代码了 【捕获到异常并抛出落后就不能执行到这一行啦】
}
}

MD5 和 Base64 综合应用

 package cn.xiangxu.cloudNote.util;

 /**
* MD5加密算法运行异常类
* @author 三少
*
*/
public class Md5Exception extends RuntimeException { private static final long serialVersionUID = 5316676928450756806L; public Md5Exception(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
} }

MD5异常类

4 MD5 和 Base64 综合应用简例

 package cn.xiangxu.testNote.test;

 import java.security.MessageDigest;

 import org.apache.tomcat.util.codec.binary.Base64;

 public class Test {
public static String md5(String str) throws Exception {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
System.out.println("md5对象:" + md5);
System.out.println("原始数据:" + str); byte [] output = md5.digest(str.getBytes());
String str_output = new String(output);
System.out.println("加密后数据:" + str_output); str_output = Base64.encodeBase64String(output);
System.out.println("处理后的加密数:" + str_output);
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
}
return null;
} public static void main(String[] args) throws Exception {
Test.md5("dd");
} }

03 MD5加密、Base64处理的更多相关文章

  1. Linux下使用MD5加密BASE64加密

    这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e 这里以1.txt为需要被加密的文件. 一. 用oppnssl md5 加密字符串和 ...

  2. Js中 md5 sha1 base64 加密

    js的3中加密方式: .sha1加密,加密性高 调用: var sha = hex_sha1(str); .base64加密 调用: var b = new Base64(); var str = b ...

  3. MD5加密、时间戳转换、base64算法加密、解密

    #region MD5加密 /// <summary> /// MD5加密 /// </summary> /// <param name="str"& ...

  4. IOS开发之—— 各种加密的使用(MD5,base64,DES,AES)

    基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm ...

  5. MD5加密,Base64加密/解密,AES加密/解密

    1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示. 2.使用前的配置及注意事项: (1) 在build phases中的GTMBa ...

  6. iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全

    演示样例项目下载地址  https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h&g ...

  7. IOS常见的加密方法,常用的MD5和Base64

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  8. js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结

    写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...

  9. python接口自动化测试二十七:加密与解密MD5、base64

    # MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...

随机推荐

  1. Python - 批量改变文件名

    import osimport sysimport datetime path = "E:\python_test"datename = '2016-02-11'a = datet ...

  2. [Unity3D]EZGUI 操作简单介绍

    官方的GUI根本无法跟EZGUI比,无论是资源还是易用性还是速度.EZGUI基于Mesh不占DrawCall.EZGUI是自动合并Mesh成为一个物体,并且贴图自动制作Atlas.所以效率高,CPU消 ...

  3. 【bzoj4987】Tree 树形背包dp

    题目描述 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. 输入 第一行两个正整数n,k,表示数的顶点数和需要选出的点个数. 接下 ...

  4. C#关闭一个窗口的同时打开另一个窗口

    在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被 ...

  5. Js中的prototype的用法二

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  6. angular的$q,defer,promise

    $q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(或异常). 官网:http://docs.angularjs.cn/api/ng/servi ...

  7. 使用批处理自动发布IIS站点,基于IIS7及以上

    经过研究,终于使用批处理解决了站点发布步骤多的问题. 完整批处理如下: @set "sitePath=%~dp0" @echo 新建程序池 @C:\Windows\System32 ...

  8. [转载]centos下yum安装samba及配置

    centos下yum安装samba及配置 在我们使用 Windows 作为客户机的时候,通常有文件.打印共享的需求.作为Windows 网络功能之一,通常可以在 Windows 客户机之间通过Wind ...

  9. 使用内省的方式操作JavaBean

    import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; im ...

  10. 使用spring-boot-starter-amqp开发生产者应用

    上一篇我们介绍了如何使用spring AMQP和RabbitMQ结合,开发消费者应用程序,使用的是Xml配置的Spring框架. 本篇我们仍然使用Spring AMQP开发生产者应用,不过我们使用零 ...