一. 简述

MD5: 全称为message digest algorithm 5(信息摘要算法), 能够进行加密, 可是不能解密, 属于单向加密, 通经常使用于文件校验

Base64: 把随意序列的8为字节描写叙述为一种不易为人识别的形式, 通经常使用于邮件、http加密. 登陆的username和password字段通过它加密, 能够进行加密和解密.

二. 代码

1. MD5:

public class MD5Utils {
/**
* 使用md5的算法进行加密
* @param plainText 加密明文
* @return 加密密文
*/
public static String getDigest(String plainText) {
byte[] secretBytes = null;
try {
secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("error happens", e);
}
return new BigInteger(1, secretBytes).toString(16);
}
}

2. Base64:

public class Base64Util {
/**
* 使用Base64进行编码
* @param encodeContent 须要编码的内容
* @return 编码后的内容
*/
public static String encode(String encodeContent) {
if (encodeContent == null) {
return null;
}
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(encodeContent.getBytes());
} /**
* 使用Base64进行编码
* @param encodeContent 须要编码的内容
* @return 编码后的内容
*/
public static String encode(byte[] encodeText) {
return encode(new String(encodeText));
} /**
* 使用Base64进行解码
* @param encodeContent 须要解码的内容
* @return 解码后的内容
*/
public static String decode(String decodeContent) {
byte[] bytes = null;
if (decodeContent == null) {
return null;
}
try {
bytes = new BASE64Decoder().decodeBuffer(decodeContent);
} catch (IOException e) {
throw new RuntimeException("error happens", e);
} finally {
}
return new String(bytes);
}
}

3. 測试代码:

public class Test {
/**
* 先使用MD5算法加密, 再使用base64算法进行编码
* @param args
*/
public static void main(String[] args) {
String plainText = "pwd";
String encodedPassword = MD5Utils.getDigest(Base64Util.encode(plainText));
System.out.println(encodedPassword);
}
}

为什么使用MD5加密后还要使用Base64编码呢? 用Base64算法编码后得到的是32位长度的字符串, 这样有利于在数据库中进行存储.

版权声明:本文博主原创文章。博客,未经同意不得转载。

MD5和Base64的更多相关文章

  1. Js中 md5 sha1 base64 加密

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

  2. 【java】之 apache commons-codec 与Apache Digest demo实例,支持md5 sha1 base64 hmac urlencode

    使用commons-codec 进行加密的一些操作 package com.jiepu.ApacheDigest; import java.io.FileInputStream; import org ...

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

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

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

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

  5. 终端命令对字符串进行sha1、md5、base64、urlencode/urldecode

    sha1.md5.base64 mac $ echo -n foo|shasum 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33 - $ 2c26b46b68ffc6 ...

  6. python的md5和base64加密

    在用jmeter测试接口时,有的请求参数会加密,例如,回流接口:http://ip:port/oms-gateway-datareflow-mq/orderReflow/tmsPracticeActi ...

  7. iOS常用加密方法(aes、md5、base64)

    1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...

  8. Java基础---MD5和BASE64

    package cn.peter; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import ...

  9. MD5与Base64的思考

    MD5加密是对任意长的数据使用MD5哈稀算法散列为4个32位组,若格式化为ASCII字符则为16字符,若格式化16进制表示,则为32字符.  (MD5的具体算法请参阅相关书籍和资料) MD5广泛用于数 ...

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

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

随机推荐

  1. F5 root密码恢复

    使用串口线缆链接F5的串口和PC相连接,调节串口的波特率为12000,重启F5 后在启动菜单上和linux 单用户模式一样操作即可.

  2. C#多线程问题整合

    一.跨进程访问组件 错误:线程间操作无效: 从不是创建控件“XXX”的线程访问它 解决方法: 1:把CheckForIllegalCrossThreadCalls设置为false 这个方法只是不去捕获 ...

  3. Redis集群_3.redis主从自动切换Sentinel(转)

    Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 一.Sentinel作用:1):Master状态检测 2 ...

  4. [cocos2dx-lua]"Hello Lua"分析

    一年之前学的cocos2dx,那时候还是用C++编写的.但学完之后就找的一个新的方向--Unity3D开发的岗位,对我而言是一个新方向,那时候经过了几个月的每天熬夜奋战,从"0"基 ...

  5. 逆向project第004篇:令计算器程序显示汉字(下)

    一.前言 钩子技术是一项很有有用价值的技术.在Windows下HOOK技术的方法比較多,使用比較灵活,常见的应用层的HOOK方法有Inline HOOK(详见<反病毒攻防研究第012篇:利用In ...

  6. Java-UrlRewrite中文api文档

    安装 1. 下载jar包, 并加入到WEB-INF/lib下 2. 在WEB-INF/web.xml中增加下面的配置 <filter> <filter-name>UrlRewr ...

  7. robot framework 使用四:分层设计和截图以及注意事项

    再说一下眼下的主要环境信息和版本号: 操作系统:win7 64位 python版本号:2.7.6 RIDE版本号:1.2.3 selenium2library:1.5.0 selenium:2.40. ...

  8. UNIX网络编程卷1 server程序设计范式7 预先创建线程,以相互排斥锁上锁方式保护accept

    本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.预先创建一个线程池.并让每一个线程各自调用 accept 2.用相互排斥锁代替让每一个线 ...

  9. 对ORA-01795: 列表中的最大表达式数为 1000的处理(算法:计算数量及切割)

    /** * @category  * 原:strIDs in ( 100001,100002,100003,....................,110001,120001,130001,1400 ...

  10. .net读取异步Post的内容

    //读取微信Post过来的XML内容                 byte[] input = HttpContext.Current.Request.BinaryRead(HttpContext ...