03 MD5加密、Base64处理
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处理的更多相关文章
- Linux下使用MD5加密BASE64加密
这里以字符串123456为例子,它的md5密文值为:e10adc3949ba59abbe56e057f20f883e 这里以1.txt为需要被加密的文件. 一. 用oppnssl md5 加密字符串和 ...
- Js中 md5 sha1 base64 加密
js的3中加密方式: .sha1加密,加密性高 调用: var sha = hex_sha1(str); .base64加密 调用: var b = new Base64(); var str = b ...
- MD5加密、时间戳转换、base64算法加密、解密
#region MD5加密 /// <summary> /// MD5加密 /// </summary> /// <param name="str"& ...
- IOS开发之—— 各种加密的使用(MD5,base64,DES,AES)
基本的单向加密算法: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm ...
- MD5加密,Base64加密/解密,AES加密/解密
1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示. 2.使用前的配置及注意事项: (1) 在build phases中的GTMBa ...
- iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全
演示样例项目下载地址 https://github.com/cerastes/Encryption 1MD5 创建MD5类 #import <Foundation/Foundation.h&g ...
- IOS常见的加密方法,常用的MD5和Base64
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么 ...
- python接口自动化测试二十七:加密与解密MD5、base64
# MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...
随机推荐
- Eclipse Dynamic Web Module 3.0 requires Java 1.6 or newer && Filter mapping specifies an unknown filter name characterEncodingFilter
一直在宇宙最强的 IDE 下生长的,自然很难习惯 eclipse 这种开源且免费且各种版本且各种定制的 IDE 下没有少吃苦头. 最近用 maven 搭建了一个 springmvc/mybatis 的 ...
- Python安装升级步骤
1)安装Pyhton2.7wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2tar xjvf Python-2.7.5.t ...
- hdu-3790-最短路径问题(Dijkstra)
题目链接 /* Name:hdu-3790-最短路径问题 Copyright: Author: Date: 2018/4/16 19:16:25 Description: dijkstra 模板题 * ...
- hdu-5183-Negative and Positive (NP)(hash模板)
题目链接 #include <iostream> #include <cstdio> #include <cstring> #include <algorit ...
- New Concept English three (52)
My cousin, Harry, keeps a large curiously-shaped bottle on permanent display in his study. Despite t ...
- 高可用-软件heartbeat的入门介绍
注:参考互联网整理. 一.简介Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(r ...
- 树莓派外设、模块、传感器 —— 数码管(F3461BH)
1. 4 位 8 段(7+点)数码管 树莓派GPIO入门05-驱动数码管显示数字 其内部电路图及各个段的引脚控制如下: 共阳与共阴: 数码管从电源极性上分共阳和共阴两种.解释一下,如果数码管上每一个独 ...
- 【剑指offer】以o(1)复杂度删除啊链表的节点,C++实现(链表)
0.简介 本文是牛客网<剑指offer>刷题笔记. 1.题目 在O(1)时间内删除链表节点. 2.思路 前提条件:删除的节点在链表上:边界条件:链表 ...
- ACM学习历程—Hihocoder 1139 二分·二分答案(bfs)
http://hihocoder.com/problemset/problem/1139 这题提示上写的是二分,但是感觉不二分应该也可以,至少题目是AC的... 二分的思想就是二分答案的值,看能不能在 ...
- expect 切换用户
安装expect yum install expect -y #!/bin/expect -f spawn su - expect "Password:" send "n ...