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. 【Prism】MEF版UIComposition

    引言 UIComposition原版Demo在PrismV5的解压包里面.原Demo用了.net4.5版本的DLL,我改成.net4.0的. RegionContext 这个Demo比之前那几个示例大 ...

  2. 如何下载中文语言包让Eclipse汉化?

    Eclipse软件是JAVA开发必备的软件,对于英语不好的人而言面对英文代码还好,但是软件也是英语的那就头疼了,怎么解决?可以去官网下载中文语言包解压到Eclipse安装目录就可以汉化了.   工具/ ...

  3. L117

    Hoover has become a household word for a vacuum cleaner through the world.Economics are slowly killi ...

  4. 2017.11.28 Enginering management:problem-solving ability

    Today,my colleague is on bussiness trip. going to customer factory in jiangxi. slove the color diffe ...

  5. inndb索引原理

    ###详解b+树如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含 ...

  6. UVA - 11019 Matrix Matcher (二维字符串哈希)

    给你一个n*m的矩阵,和一个x*y的模式矩阵,求模式矩阵在原矩阵中的出现次数. 看上去是kmp在二维情况下的版本,但单纯的kmp已经无法做到了,所以考虑字符串哈希. 类比一维情况下的哈希算法,利用容斥 ...

  7. [HihoCoder1413]Rikka with String

    vjudge 题意 给你一个串,问你把每个位置的字符替换成#后串中有多少本质不同的子串. \(n\le 3*10^5\) sol 首先可以计算出原串里面有多少本质不同的子串.显然就是\(\sum_{i ...

  8. celery 停止执行中 task

    目录 原因 解决过程 原因 因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止celery task任务的方法.这种需求以前没有碰到过,所以,只能求助于百度和google,但是找遍了资 ...

  9. 调整 WiFi 驱动设置让 WiFi 信号更稳定

    调整 WiFi 驱动设置让 WiFi 信号更稳定 修改 WiFi 驱动中 的设置,将 Power Saving Mode 的值改为 CAM.

  10. 应用层-day02

    web与HTTP web的应用层协议时超文本传输协议(HyperText Transfer Protocol HTTP) HTTP是由两个程序实现的:一个客户端程序和一个服务器程序. HTTP定义了w ...