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' };
}
分享到:
相关推荐
本资源提供了base64、MD5、RSA和SHA1这四种常见加密算法的Java实现,并附带了相应的jar包,便于学习和应用。 首先,Base64是一种简单的编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络传输或...
本资源包"java实现Base64、MD5、SHA、AES、RAS等加解密js库文件"集中了这些常见加密算法的JavaScript实现,方便在前端或后端进行数据处理。下面将详细介绍这些加密技术及其应用。 1. **Base64**:Base64是一种将二...
在这个压缩包中,包含的资源可以帮助我们理解并实现SHA1、SHA、MD5、AES加密与解密,以及BASE64编码和解码。下面我们将详细探讨这些加密算法和它们在Java中的实现。 1. **SHA(Secure Hash Algorithm)**: SHA是一...
Java 常用的 4 种加密方式(MD5+Base64+SHA+BCrypt) Java 加密是指使用 Java 语言来实现数据加密、解密和数字签名等操作。数据加密是指将明文数据转换为难以理解的密文,以保护数据的机密性和完整性。Java 提供了...
本资源主要关注两种常见的加密算法:MD5(Message-Digest Algorithm 5)和BASE64编码,它们在Java中有着广泛的应用。 MD5是一种广泛使用的哈希函数,可以将任意长度的数据转化为固定长度的摘要,通常为128位,表示...
MD5和Base64是两种在信息技术领域广泛使用的编码与加密技术,它们各自有其特点和应用场景。 MD5,全称Message-Digest Algorithm 5,是一种广泛使用的哈希函数,可以将任意长度的信息转化为固定长度的摘要(通常为...
这个进行字符串加密 和解密 , 编码和 解码 包括(base64、DES、AES、SHA-1、MD5 ) ,都是亲测的,保证可用 这个进行字符串加密 和解密 , 编码和 解码 包括(base64、DES、AES、SHA-1、MD5 ) ,都是亲测的,保证...
在"常用工具类集合:Base64、MD5、SHA、RSA、Json、HttpClient、特殊数据格式验证等.zip"这个压缩包中,包含了一些在Java编程中常用的工具类,它们涵盖了数据编码、加密、网络通信以及数据验证等多个领域。...
在提供的文件名中,我们看到有三个Java类:`Base64.java`、`DESPlus.java`和`MD5Util.java`。这些文件很可能是实现这三种技术的Java代码: - `Base64.java`:这个类可能包含了Base64编码和解码的函数,用于在Java...
Base64和MD5是两种在信息技术领域广泛应用的编码与哈希算法。它们在不同的场景下发挥着关键作用,确保数据的安全性和可读性。 Base64是一种编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络传输...
从描述中可以看出,这个压缩包文件"studyjava"可能包含了一个Java项目,该项目实现了Base64和MD5的加解密功能,并且可以部署到MyEclipse集成开发环境中运行,展示出具体的效果。用户可以通过运行该项目,了解这两种...
在给定的压缩包文件中,包含了几种常用的加密算法实现,分别是MD5、Base64和SHA256。这些算法在Android开发,尤其是原生(Native)层的加密处理中扮演着关键角色。 1. **MD5(Message-Digest Algorithm 5)**: - ...
在Java中,可以使用`java.security.MessageDigest`类来实现MD5和SHA1的哈希计算。以下是一个简单的示例,展示了如何使用Java计算字符串的MD5和SHA1哈希: ```java import java.security.MessageDigest; import java...
1、base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>base64加密</title> [removed][removed] [removed] ...
* 在线 MD5/Hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 加密工具:http://tools.jb51.net/password/hash_md5_sha 六、结语 本文详细介绍了 Java 实现文件和 base64 流的相互转换功能的示例,包括文件读取...
在标题"pb和java对称base64加密解密"中,涉及到了两个编程语言——PowerBuilder(pb)和Java,以及一种常用的编码方式——Base64。同时,描述中提到了MD5加密,这又是一种常见的哈希加密算法。下面我们将详细探讨...
在提供的压缩包文件“base64和md5前后台加密对应”中,可能包含了使用Java、Python、JavaScript等编程语言实现的Base64和MD5加解密示例,或者可能是关于如何在实际项目中集成这两种方法的指南。学习和理解这些文件,...
MD5加密jar包是将MD5算法封装到Java程序中的库,方便开发者在Java应用中快速实现MD5加密功能。 MD5的特点: 1. **不可逆性**:MD5算法是单向的,即给定一个输入,可以得到一个固定长度的摘要,但不能通过摘要反推出...
Java中的单向加密技术主要包括MD5、SHA以及HMAC,这些算法主要用于数据的完整性校验和安全性保护。下面我们将详细探讨这些加密算法及其在Java中的实现。 首先,MD5(Message-Digest Algorithm 5)是一种广泛应用的...
MD5(Message-Digest Algorithm 5)是一种...通过上述代码,开发者可以快速地实现MD5加密功能,但需要注意的是,由于MD5的碰撞概率问题,现在已不再推荐用于高强度的安全需求,而是倾向于使用更安全的如SHA-256等算法。