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 ...
随机推荐
- hdu 2087 kmp
http://acm.hdu.edu.cn/showproblem.php?pid=2087 算是模板题吧,找到一个子串之后将模板串指针归零否则会重复计算. #include<bits/stdc ...
- Hbase 使用方法
列出所有 table¶ hbase(main):> list 新增 table¶ A . 直接增加一個表 t2 hbase(main):> create 't2' B . 增加一個擁有 ' ...
- 使用eclipse逆向工程开发hibernate项目
在项目设计时,要么根据需求分析建立实体类,然后正向生成数据库表:要么先进行数据库表设计,然后逆向生成实体类.也就是说,不会完成一方的设计后再花时间去匹配建立另一方,这么做的原因是: 1.如果不使用正向 ...
- windows7安装Scrapy
在Linux下安装Scrapy很容易,基本不会出现问题 pip install Scrapy 但是在Windows下经常会出现问题,首先还是尝试一下使用pip命令: pip install scrap ...
- HTML代码中的空格和空行
HTML 代码中的所有连续的空格或空行(换行)都会被显示为一个空格. 例子1:(文本内容中的连续空格) 代码 <p>这段文本中,输入连续的空格 大概输入了十个.</p> 显示效 ...
- python--关于if __name__==__main__的解释
在解释之前首先我们看下__name__这个变量存的是什么: #!/usr/bin/env python # -*- coding:utf-8 -*- print(__name__) 结果: __mai ...
- Spring_总结_03_装配Bean(二)_Java配置
一.前言 本文承接上一节:Spring_总结_03_装配Bean(一)之自动装配 上一节提到,装配Bean有三种方式,首先推荐自动装配.当自动装配行不通时,就需要采用显示配置的方式了. 显示配置有两种 ...
- 【机器学习】集成学习之xgboost的sklearn版XGBClassifier使用教程
XGBClassifier是xgboost的sklearn版本.代码完整的展示了使用xgboost建立模型的过程,并比较xgboost和randomForest的性能. # -*- coding: u ...
- 前端调错看ajax请求操作
---------------------------------------------------------------------------------------------------- ...
- Restoring Road Network(Floyd算法的推广)
个人心得:看懂题目花费了不少时间,后面实现确实时间有点仓促了,只是简单的做出了判断是否为真假的情况, 后面看了题解发现其实在判断时候其实能够一起解决的,算了,基础比较差还是慢慢的来吧. 题意概述: 就 ...