`
xmddl369
  • 浏览: 23220 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Java Base64 & Md5/Sha

阅读更多
package com.xmddl.security.demo;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 程序功能:字符串编码(Base64、MD5/SHA)
 * @author xmddl369
 * @version 1.00.00
 * @since 2008-05-17
 */
public class BaseEncoderUtil {

	public BaseEncoderUtil() {

	}

	public static void main(String[] args) {
		BaseEncoderUtil b = new BaseEncoderUtil();
		System.out.println(b.String2Hex("xmddl369"));
		System.out.println(b.String2Hex("3"));
		System.out.println(b.OctalString2Integer("10"));
		System.out.println(b.Integer2OctalString(8));
		System.out.println(b.Integer2OctalString(b.BinaryString2Integer("1010")));
		
//		System.out.println(b.EncoderString("MD5", "XX"));
//		System.out.println(b.EncoderString("SHA-1", "10000000"));
//		System.out.println(b.getBASE64("XX"));
//		System.out.println(b.getFromBASE64("WFg="));
		// System.out.println(b.md5Encode("a"));
		// System.out.println(b.shaEncode("XX"));
		// System.out.println(b.sha256Encode("XX"));
		// System.out.println(b.sha512Encode("XX"));
	}

	/**
	 * 功能:十进制数到十六进制
	 * @param value
	 * @return
	 */
	public String Integer2HexString(int value)
	{
		return Integer.toHexString(value);
	}
	
	/**
	 * 功能:十进制数到八进制
	 * @param value
	 * @return
	 */
	public String Integer2OctalString(int value)
	{
		return Integer.toOctalString(value);
	}
	
	/**
	 * 功能:十进制数到二进制
	 * @param value
	 * @return
	 */
	public String Integer2BinaryString(int value)
	{
		return Integer.toBinaryString(value);
	}
	
	/**
	 * 功能:十六进制数到十进制
	 * @param value
	 * @return
	 */
	public int HexString2Integer(String value)
	{
		return Integer.parseInt(value,16);
	}
	
	/**
	 * 功能:八进制数到十进制
	 * @param value
	 * @return
	 */
	public int OctalString2Integer(String value)
	{
		return Integer.parseInt(value,8);
	}
	
	/**
	 * 功能:八进制数到十进制
	 * @param value
	 * @return
	 */
	public int BinaryString2Integer(String value)
	{
		return Integer.parseInt(value,2);
	}
	
	/**
	 * 功能:字符串进行MD5编码,返回16进制字符串
	 * 
	 * @param message
	 * @return
	 */
	public String md5Encode(String message) {
		return EncodeString2Hex("MD5", message);
	}

	/**
	 * 功能:字符串进行SHA编码,返回16进制字符串
	 * 
	 * @param message
	 * @return
	 */
	public String shaEncode(String message) {
		return EncodeString2Hex("SHA", message);
	}

	/**
	 * 功能:字符串进行SHA-256编码,返回16进制字符串
	 * 
	 * @param message
	 * @return
	 */
	public String sha256Encode(String message) {
		return EncodeString2Hex("SHA-256", message);
	}

	/**
	 * 功能:字符串进行SHA-512编码,返回16进制字符串
	 * 
	 * @param message
	 * @return
	 */
	public String sha512Encode(String message) {
		return EncodeString2Hex("SHA-512", message);
	}

	/**
	 * 功能:将字符串进行BASE64编码,返回字符串
	 * 
	 * @param src
	 * @return
	 */
	public String getBASE64(String src) {
		if (src == null) {
			return null;
		}
		byte[] b = src.getBytes();
		BASE64Encoder encoder = new BASE64Encoder();
		return encoder.encode(b);
	}

	/**
	 * 功能:将BASE64编码的字符串src进行解码
	 * 
	 * @param src
	 * @return
	 */
	public String getFromBASE64(String src) {
		if (src == null) {
			return null;
		}
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			byte[] b = decoder.decodeBuffer(src);
			return new String(b);
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
	 * 功能:将字符串转为16进制字符串表示
	 * @param src
	 * @return
	 */
	public String String2Hex(String src){
		if(src==null)
			return null;
		byte[] b=src.getBytes();
		StringBuffer sb = new StringBuffer(b.length);
	    String sTemp;
	    for (int i = 0; i < b.length; i++) {
	     sTemp = Integer.toHexString(0xFF & b[i]);
	     if (sTemp.length() < 2)
	      sb.append(0);
	     sb.append(sTemp.toUpperCase());
	    }
	    return sb.toString();
	    
//	    if(src==null)
//			return null;
//		byte[] b=src.getBytes();
//		String ret = "";
//		for (int i = 0; i < b.length; i++) {
//			String hex = Integer.toHexString(b[i] & 0xFF);
//			if (hex.length() == 1) {
//				hex = '0' + hex;
//			}
//			ret += hex.toUpperCase();
//		}
//		return ret;
	}

	/**
	 * 功能:将字符串进行编码,并返回字符串
	 * 
	 * @param src
	 * @return
	 */
	public String EncoderString(String code, String src) {
		try {
			byte[] strTemp = src.getBytes();
			MessageDigest messageDigest = MessageDigest.getInstance(code);
			messageDigest.update(strTemp);
			byte[] md = messageDigest.digest();
			return byteArray2String(md);
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * 功能:将字节数组转为字符串
	 * 
	 * @param byteArray
	 * @return encode
	 */
	private String byteArray2String(byte[] byteArray) {
		String encode = null;
		int j = byteArray.length;
		char str[] = new char[j * 2];
		int k = 0;
		for (int i = 0; i < j; i++) {
			byte byte0 = byteArray[i];
			str[k++] = hexDigits[byte0 >>> 4 & 0xf];
			str[k++] = hexDigits[byte0 & 0xf];
		}
		encode = new String(str);
		return encode;
	}

	/**
	 * 功能:将字符串进行编码,并返回16进制字符串
	 * 
	 * @param code
	 * @param message
	 * @return encode
	 */
	private String EncodeString2Hex(String code, String message) {
		MessageDigest md;
		String encode = null;
		try {
			md = MessageDigest.getInstance(code);
			encode = byteArrayToHexString(md.digest(message.getBytes()));
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return encode;
	}

	/**
	 * 功能:对字节数组编码
	 * 
	 * @param byteArray
	 * @return
	 */
	private String byteArrayToHexString(byte[] byteArray) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < byteArray.length; i++) {
			sb.append(byteToHexString(byteArray[i]));
		}
		return sb.toString();
	}

	/**
	 * 功能:将字节进行16进制编码
	 * 
	 * @param byt
	 * @return
	 */
	private String byteToHexString(byte byt) {
		int n = byt;
		if (n < 0)
			n = 256 + n;
		return String.valueOf(hexDigits[n / 16] + hexDigits[n % 16]);
	}

	private char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
			'9', 'a', 'b', 'c', 'd', 'e', 'f' };
}

 

1
0
分享到:
| JMS
评论

相关推荐

    base64/md5/RSA/SHA1等加密算法Java实现,附jar包

    本资源提供了base64、MD5、RSA和SHA1这四种常见加密算法的Java实现,并附带了相应的jar包,便于学习和应用。 首先,Base64是一种简单的编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络传输或...

    java实现Base64、MD5、SHA、AES、RAS等加解密js库文件

    本资源包"java实现Base64、MD5、SHA、AES、RAS等加解密js库文件"集中了这些常见加密算法的JavaScript实现,方便在前端或后端进行数据处理。下面将详细介绍这些加密技术及其应用。 1. **Base64**:Base64是一种将二...

    java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及BASE64 jar和源码

    在这个压缩包中,包含的资源可以帮助我们理解并实现SHA1、SHA、MD5、AES加密与解密,以及BASE64编码和解码。下面我们将详细探讨这些加密算法和它们在Java中的实现。 1. **SHA(Secure Hash Algorithm)**: SHA是一...

    Java加密技术MD5/BASE64等加密技术

    本资源主要关注两种常见的加密算法:MD5(Message-Digest Algorithm 5)和BASE64编码,它们在Java中有着广泛的应用。 MD5是一种广泛使用的哈希函数,可以将任意长度的数据转化为固定长度的摘要,通常为128位,表示...

    MD5 、base64加密技术

    MD5和Base64是两种在信息技术领域广泛使用的编码与加密技术,它们各自有其特点和应用场景。 MD5,全称Message-Digest Algorithm 5,是一种广泛使用的哈希函数,可以将任意长度的信息转化为固定长度的摘要(通常为...

    base64、DES、AES、SHA-1、MD5 字符串加密和解密 编码和解码 大全

    这个进行字符串加密 和解密 , 编码和 解码 包括(base64、DES、AES、SHA-1、MD5 ) ,都是亲测的,保证可用 这个进行字符串加密 和解密 , 编码和 解码 包括(base64、DES、AES、SHA-1、MD5 ) ,都是亲测的,保证...

    浅析Java 常用的 4 种加密方式(MD5+Base64+SHA+BCrypt)

    Java 常用的 4 种加密方式(MD5+Base64+SHA+BCrypt) Java 加密是指使用 Java 语言来实现数据加密、解密和数字签名等操作。数据加密是指将明文数据转换为难以理解的密文,以保护数据的机密性和完整性。Java 提供了...

    常用工具类集合:Base64、MD5、SHA、RSA、Json、HttpClient、特殊数据格式验证等.zip

    在"常用工具类集合:Base64、MD5、SHA、RSA、Json、HttpClient、特殊数据格式验证等.zip"这个压缩包中,包含了一些在Java编程中常用的工具类,它们涵盖了数据编码、加密、网络通信以及数据验证等多个领域。...

    DESPlus+Base64+MD5Util

    在提供的文件名中,我们看到有三个Java类:`Base64.java`、`DESPlus.java`和`MD5Util.java`。这些文件很可能是实现这三种技术的Java代码: - `Base64.java`:这个类可能包含了Base64编码和解码的函数,用于在Java...

    Base64以及Md5的使用

    Base64和MD5是两种在信息技术领域广泛应用的编码与哈希算法。它们在不同的场景下发挥着关键作用,确保数据的安全性和可读性。 Base64是一种编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络传输...

    Base64、MD5加解密

    从描述中可以看出,这个压缩包文件"studyjava"可能包含了一个Java项目,该项目实现了Base64和MD5的加解密功能,并且可以部署到MyEclipse集成开发环境中运行,展示出具体的效果。用户可以通过运行该项目,了解这两种...

    (md5,base64,sha256) so加密代码

    在给定的压缩包文件中,包含了几种常用的加密算法实现,分别是MD5、Base64和SHA256。这些算法在Android开发,尤其是原生(Native)层的加密处理中扮演着关键角色。 1. **MD5(Message-Digest Algorithm 5)**: - ...

    MD5-SHA1.zip_ java HMAC SHA1 _algorithms

    在Java中,可以使用`java.security.MessageDigest`类来实现MD5和SHA1的哈希计算。以下是一个简单的示例,展示了如何使用Java计算字符串的MD5和SHA1哈希: ```java import java.security.MessageDigest; import java...

    base64前后台加解密,md5前后台加解密文件

    在提供的压缩包文件“base64和md5前后台加密对应”中,可能包含了使用Java、Python、JavaScript等编程语言实现的Base64和MD5加解密示例,或者可能是关于如何在实际项目中集成这两种方法的指南。学习和理解这些文件,...

    javascript实现base64 md5 sha1 密码加密

    1、base64加密  在页面中引入base64.js文件,调用方法为: &lt;!DOCTYPE HTML&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;base64加密&lt;/title&gt; [removed][removed] [removed] ...

    pb和java对称base64加密解密

    在标题"pb和java对称base64加密解密"中,涉及到了两个编程语言——PowerBuilder(pb)和Java,以及一种常用的编码方式——Base64。同时,描述中提到了MD5加密,这又是一种常见的哈希加密算法。下面我们将详细探讨...

    Java实现文件和base64流的相互转换功能示例

    * 在线 MD5/Hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 加密工具:http://tools.jb51.net/password/hash_md5_sha 六、结语 本文详细介绍了 Java 实现文件和 base64 流的相互转换功能的示例,包括文件读取...

    md5加密jar包

    MD5加密jar包是将MD5算法封装到Java程序中的库,方便开发者在Java应用中快速实现MD5加密功能。 MD5的特点: 1. **不可逆性**:MD5算法是单向的,即给定一个输入,可以得到一个固定长度的摘要,但不能通过摘要反推出...

    Java 详解单向加密--MD5、SHA和HMAC及简单实现实例

    Java中的单向加密技术主要包括MD5、SHA以及HMAC,这些算法主要用于数据的完整性校验和安全性保护。下面我们将详细探讨这些加密算法及其在Java中的实现。 首先,MD5(Message-Digest Algorithm 5)是一种广泛应用的...

    MD5加密java和android通用

    MD5(Message-Digest Algorithm 5)是一种...通过上述代码,开发者可以快速地实现MD5加密功能,但需要注意的是,由于MD5的碰撞概率问题,现在已不再推荐用于高强度的安全需求,而是倾向于使用更安全的如SHA-256等算法。

Global site tag (gtag.js) - Google Analytics