MD5加密及BASE64编码

MD5即Message-Digest Algorithm 5(信息-摘要算法5):

方法一:

	添加jar包:${SPRING_HOME}/lib/jakarta-commons/commons-codec.jar

	import org.apache.commons.codec.digest.DigestUtils;

	public class MD5Util {
		// 返回md5加密后的字符串
		public static String md5(String message) {
			String md5Digest = DigestUtils.md5Hex(message);
			return md5Digest;
		}
	}

方法二:
	// JDK自带的
	import java.security.MessageDigest;
	// 也是JDK自带的,可以在OpenJDK中查看其源码
	import sun.misc.BASE64Encoder;

	public class MD5Util {
		// 返回md5加密后的字符串
		public static String md5(String message) {
			try {
				MessageDigest md = MessageDigest.getInstance("MD5");
				byte[] md5Bytes = md.digest();
				// 采用Base64编码把字节序列转换为明文
				BASE64Encoder base64Encoder = new BASE64Encoder();
				return base64Encoder.encode(md5Bytes);
			} catch (Exception e) {
				throw new RuntimeException(e);
			}
		}
	}

	补充:Base64编码

	编码原理:将3个字节转换成4个字节((3X8)=24=(4X6))
		先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了。
	解码原理: 将4个字节转换成3个字节
		先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位,这样就还原了。

	说明:
		1,Base64编码可用于在HTTP环境下传递较长的标识信息
		2,Base64编码后的标识信息长度为24
		3,	3个字节转成4个字节后,每一个字节表示的最小和最大数分别是:00000000 ~ 00111111
			0~63共64个整数,所以称之为Base64,它其实是一个码表,每个数字对应一个可见字符

时间: 2024-11-07 21:39:15

MD5加密及BASE64编码的相关文章

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

1.从github上下载GTMBase64-master和AESCrypt-ObjC-master导入工程,如下图所示. 2.使用前的配置及注意事项: (1) 在build phases中的GTMBase64.m需要设置 -fno-objc-arc (2) 在#import "NSString+Base64.m”文件中导入   #import <Foundation/Foundation.h> (3)在#import "GTMBase64.m”文件中添加         

Java: md5 加密中文 &amp; 注意编码

今天使用java的md5加密一个字符串(含有部分中文),遇到问题,百思不得其解. 后面网上搜索了一下,才知道是[编码]的问题. 以前在asp中用md5加密的时候,了解 gb2312和utf-8编码下,md5加密结果不一样. 我没想到java也有类似的问题,不过解决办法倒很简单: 原来的代码: 1 alg.update(txt.getBytes(encoding)); 只需修改为: 1 2 3 4 5 6 7 8 try         {             alg.update(txt.g

Android数据加密之Base64编码算法

前言: 前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算法,为何要使用Base64编码呢?它解决了什么问题?这也是本文探讨的东西?下面是其他数据加密链接地址: Android数据加密之Rsa加密 Android数据加密之Aes加密 Android数据加密之Des加密 Android数据加密之MD5加密 什么Base64算法? Base64是网络上最常见的

ios 关于MD5 加密的32位与16位

在IOS开发过程中,为了保证数据的安全,我们通常要采取一些加密方法,常见的加密有Base64加密和MD5加密.Base64加密是可逆的,MD5加密目前来说一般是不可逆的.我们在开发一款App过程中,对于发的请求,其中有个“sign”的字段,这个key对应的value是MD5加密的字段,旁边的安卓同事问php后台,说MD5加密是32位的还是16位的,由于以前未曾注意过,所以就搜索了下,现在稍微总结下: MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传

sqlserver 进行MD5加密

官方定义函数: HashBytes ( '<algorithm>', { @input | 'input' } )  <algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 参数解释: algorithm:标识用于对输入执行哈希操作的哈希算法.这是必选参数,无默认值.需要使用单引号. @input : 数据类型为 varchar.nvarchar 或 varbinary 'input' : 字符串数据 返回值: varbinary (最大8000字节

从原理上理解Base64编码

开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该.大概介绍一下Base64的相关内容,花几分钟时间就可以彻底理解它.文 章下边贴了一个Base64的编解码器,方便阅读文章的同时来实验. 一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的限制,比如

openssl pem转cer文件 并用base64编码解码过程

#!/bin/bash#pem转ceropenssl x509 -outform der -in 3324861__ksjgs.com.pem -out ksjgs-bak.cer#aes 128加密并用base64编码openssl enc -aes-128-cbc -in ksjgs-bak.cer -out ksjgs-bak-enc.log -a #解密#base64解码base64 -d ksjgs-bak-enc.log > ksjgs-bak-unbase64.log#aes 12

Base64编码 - Md5加密 - url编码

#pragma mark --------编码-------------- + (NSString * )encodeBase64:(NSString * )text { NSData * data = [text dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; // 转换到base64 data = [GTMBase64 encodeData:data]; NSString * base64String = [

网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

网络安全--Base64编码.MD5.SHA1-SHA512.HMAC(SHA1-SHA512)哈希 阅读目录 一.Base64编码 二.MD5.SHA1.SHA256.SHA512.HMAC实现 github代码下载地址 据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式,这样每一个字节的有效位为6位