`

MD5 DES BASE64加密 解密

    博客分类:
  • Jave
阅读更多
import java.security.MessageDigest;

import sun.misc.BASE64Encoder;

public class MD5 {
   //admin
	public static String md5(String source) {
		try {
			MessageDigest messageDigest = MessageDigest.getInstance("MD5");
			byte[] b = messageDigest.digest(source.getBytes("utf-8"));
			BASE64Encoder base64en = new BASE64Encoder();
			return base64en.encode(b);
		} catch (Exception e) {
			throw new RuntimeException("not support md5");
		}
	}

	 public static void main(String[] args) {
		 String result = MD5.md5("admin");
		 System.out.println(result);
		 
	}


}





package MD5;
import java.security.*;
import java.util.logging.Logger;

import javax.crypto.*;

import org.apache.commons.logging.Log;

public class DESSSO {
	private static String strDefaultKey = "national";

	private Cipher encryptCipher = null;

	private Cipher decryptCipher = null;

	/**
	 * 将byte数组转换为表示16进制值的字符串, 如:byte[]{8,18}转换为:0813, 和public static byte[]
	 * hexStr2ByteArr(String strIn) 互为可逆的转换过程
	 * 
	 * @param arrB 需要转换的byte数组
	 * @return 转换后的字符串
	 * @throws Exception 本方法不处理任何异常,所有异常全部抛出
	 */
	public static String byteArr2HexStr(byte[] arrB) throws Exception {
		int iLen = arrB.length;
		// 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍
		StringBuffer sb = new StringBuffer(iLen * 2);
		for (int i = 0; i < iLen; i++) {
			int intTmp = arrB[i];
			// 把负数转换为正数
			while (intTmp < 0) {
				intTmp = intTmp + 256;
			}
			// 小于0F的数需要在前面补0
			if (intTmp < 16) {
				sb.append("0");
			}
			sb.append(Integer.toString(intTmp, 16));
		}
		return sb.toString();
	}

	/**
	 * 将表示16进制值的字符串转换为byte数组, 和public static String byteArr2HexStr(byte[] arrB)
	 * 互为可逆的转换过程
	 * 
	 * @param strIn
	 *            需要转换的字符串
	 * @return 转换后的byte数组
	 * @throws Exception
	 *             本方法不处理任何异常,所有异常全部抛出
	 * 
	 */
	public static byte[] hexStr2ByteArr(String strIn) throws Exception {
		byte[] arrB = strIn.getBytes();
		int iLen = arrB.length;

		// 两个字符表示一个字节,所以字节数组长度是字符串长度除以2
		byte[] arrOut = new byte[iLen / 2];
		for (int i = 0; i < iLen; i = i + 2) {
			String strTmp = new String(arrB, i, 2);
			arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);
		}
		return arrOut;
	}

	/**
	 * 默认构造方法,使用默认密钥
	 * 
	 * @throws Exception
	 */
	public DESSSO() throws Exception {
		this(strDefaultKey);
	}

	/**
	 * 指定密钥构造方法
	 * 
	 * @param strKey
	 *            指定的密钥
	 * @throws Exception
	 */
	public DESSSO(String strKey) throws Exception {
		Security.addProvider(new com.sun.crypto.provider.SunJCE());
		Key key = getKey(strKey.getBytes());

		encryptCipher = Cipher.getInstance("DES");
		encryptCipher.init(Cipher.ENCRYPT_MODE, key);

		decryptCipher = Cipher.getInstance("DES");
		decryptCipher.init(Cipher.DECRYPT_MODE, key);
	}

	/**
	 * 加密字节数组
	 * 
	 * @param arrB
	 *            需加密的字节数组
	 * @return 加密后的字节数组
	 * @throws Exception
	 */
	public byte[] encrypt(byte[] arrB) throws Exception {
		return encryptCipher.doFinal(arrB);
	}

	/**
	 * 加密字符串
	 * 
	 * @param strIn
	 *            需加密的字符串
	 * @return 加密后的字符串
	 * @throws Exception
	 */
	public String encrypt(String strIn) throws Exception {
		return byteArr2HexStr(encrypt(strIn.getBytes()));
	}

	/**
	 * 解密字节数组
	 * 
	 * @param arrB
	 *            需解密的字节数组
	 * @return 解密后的字节数组
	 * @throws Exception
	 */
	public byte[] decrypt(byte[] arrB) throws Exception {
		return decryptCipher.doFinal(arrB);
	}

	/**
	 * 解密字符串
	 * 
	 * @param strIn
	 *            需解密的字符串
	 * @return 解密后的字符串
	 * @throws Exception
	 */
	public String decrypt(String strIn) throws Exception {
		return new String(decrypt(hexStr2ByteArr(strIn)));
	}

	/**
	 * 从指定字符串生成密钥,密钥所需的字节数组长度为8位 不足8位时后面补0,超出8位只取前8位
	 * 
	 * @param arrBTmp
	 *            构成该字符串的字节数组
	 * @return 生成的密钥
	 * @throws java.lang.Exception
	 */
	private Key getKey(byte[] arrBTmp) throws Exception {
		// 创建一个空的8位字节数组(默认值为0)
		byte[] arrB = new byte[8];

		// 将原始字节数组转换为8位
		for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
			arrB[i] = arrBTmp[i];
		}

		// 生成密钥
		Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES");

		return key;
	}
	
	public static void main(String[] args) {   
		  try {   
		   String test = "hello java";
		   System.out.println("加密前的字符:"+test);
		   
		   DESSSO des = new DESSSO("llg__");//自定义密钥   
		   String newStr = des.encrypt(test) ;
		   System.out.println("加密后的字符:"+newStr);   
		   
		   
		   System.out.println("解密后的字符:"+des.decrypt(newStr));   
		  } catch (Exception e) {   
		    e.printStackTrace();
		  }   
		}  
}



import java.io.UnsupportedEncodingException;

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

public class Base64 {  
    // 加密  
    public static String getBase64(String str) {  
        byte[] b = null;  
        String s = null;  
        try {  
            b = str.getBytes("utf-8");  
        } catch (UnsupportedEncodingException e) {  
            e.printStackTrace();  
        }  
        if (b != null) {  
            s = new BASE64Encoder().encode(b);  
        }  
        return s;  
    }  
  
    // 解密  
    public static String getFromBase64(String s) {  
        byte[] b = null;  
        String result = null;  
        if (s != null) {  
            BASE64Decoder decoder = new BASE64Decoder();  
            try {  
                b = decoder.decodeBuffer(s);  
                result = new String(b, "utf-8");  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
        return result;  
    }  
    
    public static void main(String[] args) {
		String str = "admin";
		String encode=getBase64(str);
		System.out.println(encode);
		
		System.out.println(getFromBase64(encode));
	}
}  
分享到:
评论

相关推荐

    pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip

    pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码(含pb9 Demo).zip pb用NetDiskDLL做的MD5加密、des加密解密、Base64编码解码...

    PB可用md5加密、des加解密,Base64编码DLL、附PB11.5调用例程

    标题中的“PB可用md5加密、des加解密,Base64编码DLL、附PB11.5调用例程”表明这是一个关于PowerBuilder(PB)应用的开发资源,其中包含使用MD5加密、DES(Data Encryption Standard)解密以及Base64编码的功能。...

    Base64And3Des(C++3Des加密解密结合Base64加密解密).rar

    在这个项目中,"Base64And3Des(C++3Des加密解密结合Base64加密解密).rar" 提供了一个C++实现,用于结合3DES(Triple Data Encryption Standard)加密算法与Base64编码进行数据的加解密。下面我们将详细探讨3DES和...

    3DES+Base64加密解密算法

    在iOS中实现3DES+Base64加密解密,可以使用CommonCrypto库,该库提供了低级别的加密操作接口。开发者需要自己编写代码来实现密钥的生成、数据的分组以及3DES的加密解密过程,并结合Base64编码解码函数。 需要注意的...

    PB可用md5加密、des加解密DLL,附PB9调用例程

    通过分析"md5test.pbl"中的代码,你可以看到如何在PB中导入和使用DLL,以及如何传递参数进行加密解密操作。通常,这会涉及到声明外部函数,指定DLL、函数名、参数类型和返回值类型。然后在代码中调用这些函数,处理...

    Delphi AES DES MD5 RSA BASE64等加密算法源码实例集.rar

    包括了Delphi AES DES MD5 RSA BASE64 2DES 3DES Blowfish CRC32-Static SHA等 常用的加密算法用法实例,比较不错的Delphi加密实例代码了,浅显易懂而且实用的常见加密算法实例,包括字符串和文件加密解密等。

    C++ 实现 3DES加解密Base64加解密

    本篇文章将详细探讨在C++中实现3DES和Base64加解密的技术要点。 3DES(Triple Data Encryption Algorithm)是一种对称加密算法,它是DES(Data Encryption Standard)的加强版。DES使用56位的密钥,3DES通过三次...

    C#加密解密DeEncryptHelper.zip

    MD5 单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 ...RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密函数 获取Hash描述表 RSA签名 RSA 签名验证

    android studio JNI RSA DES AES base64 MD5 加解密.rar

    本资源提供了在Android Studio项目中使用JNI实现RSA、DES、AES以及Base64和MD5的示例。 1. **RSA**: RSA是一种非对称加密算法,它基于两个密钥——公钥和私钥。公钥可以公开,用于加密数据;而私钥必须保密,用于...

    Base64工具类(加密、解密 )以及MD5加密

    这样的工具类在实际开发中非常实用,开发者可以方便地对字符串进行Base64编码解码,同时也可以进行MD5、DES和AES的加密解密操作,以满足不同层次的安全需求。 使用这些加密技术时,需要注意以下几点: - 对于敏感...

    js加密算法3des和md5-base64和常用工具

    本文将深入探讨三种常见的加密算法:3DES、MD5以及Base64,并介绍它们在实际应用中的工具和用途。 首先,我们来了解一下3DES(Triple DES,三重数据加密标准)。3DES是一种对称加密算法,它是DES(Data Encryption ...

    Base64整合DES加解密支持密钥支持解密失败返回统一字符支持加密后去除特殊字符

    那么我们来一个Base64+DES组合加密,支持自定义Key(密钥)。 Base64加密后的字符串在URL中不安全,想去掉特殊符号?这里支持。 想在解密失败返回统一字符?这里支持。告诉我还有什么是你想要的。这里都有,如果好用...

    Python常用base64 md5 aes des crc32加密解密方法汇总

    base64模块的base64编码、解码调用了binascii模块,binascii模块中的b2a_base64()函数用于base64编码,binascii模块中的a2b_base64()函数用于base64解码。 &gt;&gt;&gt;import base64 &gt;&gt;&gt; s = 'hello,word!' &gt;&gt;&gt; base64.b64...

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

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

    易语言Base64支持密码加密

    解密文本的过程则正好相反,首先,接收方需要对Base64编码的字符串进行解码,得到加密后的二进制数据,然后用相同的密码进行解密,从而恢复原始文本。这个过程需要确保密码的准确性和安全性,否则解密将无法成功。 ...

    base64加密解密-js-utf-8

    base64中文加密 注意中文编码为UTF-8

    Encrypt.rar (md5 des base64)

    在这个“Encrypt.rar”压缩包中,包含的是用C++语言实现的MD5、DES和Base64三种加密算法的源代码文件。接下来,我们将深入探讨这三个核心概念及其在C++中的实现。 1. **MD5(Message-Digest Algorithm 5)**: MD5...

    Vue-常用加密(MD5,DES,SHA256,BASE64,SHA1,RSA)

    Vue-常用加密(MD5, DES, SHA256, BASE64, SHA1, RSA) Vue 中常见的加密算法可以分成三类:对称加密算法、非对称加密算法和 Hash 算法。下面将详细介绍每种加密算法的特点、优点和缺点,以及它们的应用场景。 一...

Global site tag (gtag.js) - Google Analytics