`
风流情不留
  • 浏览: 16834 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

MD5加密

 
阅读更多
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;

import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

public class Util {
	/**
	 * 加密方法
	 * @param data:要加密的数据
	 * @param key:秘钥
	 * @return
	 * @throws Exception
	 */
	public static String encryption(String data,String key) throws Exception{
		try
        {
            DESKeySpec dks = new DESKeySpec(key.getBytes());
             
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            //key的长度不能够小于8位字节
            Key secretKey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
            AlgorithmParameterSpec paramSpec = iv;
            cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec);
            byte[] bytes = cipher.doFinal(data.getBytes());
            String str=byte2HexString(bytes); 
            return str;
        } catch (Exception e)
        {
            throw new Exception(e);
        }
	}
	
	/**
     * byte[]转换成字符串
     * @param b
     * @return
     */
	static String byte2HexString(byte[] b)
    {
	     StringBuffer sb = new StringBuffer();
	     int length = b.length;
	     for (int i = 0; i < length; i++) {
	    	 String stmp = Integer.toHexString(b[i]&0xff);
	    	 if(stmp.length() == 1)
	    		 sb.append("0"+stmp);
	    	 else
	    		 sb.append(stmp);
	     }
	     return sb.toString();
    }
	
	/**
	 * 解密方法
	 * @param data:要解密的数据
	 * @param key:秘钥
	 * @return
	 * @throws Exception
	 */
	public static String decryption(String data,String key) throws Exception{
		try
        {
            DESKeySpec dks = new DESKeySpec(key.getBytes());
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            //key的长度不能够小于8位字节
            Key secretKey = keyFactory.generateSecret(dks);
            Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
            AlgorithmParameterSpec paramSpec = iv;
            cipher.init(Cipher.DECRYPT_MODE, secretKey,paramSpec);
            String str=new String(cipher.doFinal(String2Byte(data))); 
            return str;
        } catch (Exception e)
        {
            throw new Exception(e);
        }
	}
	
	/**
     * 16进制转换成byte[]
     * @param hexString
     * @return
     */
	static byte[] String2Byte(String hexString)
    {
	     if(hexString.length() % 2 ==1)
	    	 return null;
	     byte[] ret = new byte[hexString.length()/2];
	     for (int i = 0; i < hexString.length(); i+=2) {
	    	 ret[i/2] = Integer.decode("0x"+hexString.substring(i,i+2)).byteValue();
	     }
	     return ret;
    }
}

 

加密实例:

try {
			String string="广州市";
			String encryption = null;
			encryption=Util.encryption(string, "abcdefghijk");
			Log.i("加密后的字符串:",encryption);
			String decryption=null;
			decryption=Util.decryption(encryption, "abcdefghijk");
			Log.i("解密后的字符串:", decryption);
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

 运行结果:

 02-06 15:56:09.840: I/加密后的字符串:(20768): f9618e92794af394
02-06 15:56:09.850: I/解密后的字符串:(20768): 广州

分享到:
评论

相关推荐

    MD5加密MD5加密MD5加密

    MD5加密MD5加密MD5加密MD5加密MD5加密

    Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法

    Kettle中使用JavaScript调用jar包对文件内容进行MD5加密.本文主要知识点: JavaScript调用jar包对文件内容进行MD5加密,返回加密md5值 Kettle实现对文件内容的加密,返回加密md5值 2.使用方法 1)下载jar包 ...

    PB9.0调用MD5加密示例,md5加密方法过程,PowerBuilder

    pb9.0调用md5加密

    MD5加密MD5加密

    MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密

    Md5加密jar包

    两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,

    md5加密md5加密

    md5加密md5加密md5加密md5加密md5加密md5加密

    WPS内实现MD5加密

    在WPS内通过JS宏实现MD5加密

    支持utf-8的md5加密,js md5加密js代码

    搞小程序开发,请求接口的加密部分用到md5,百度一大堆垃圾的js md5加密,每一个都正确,都是不支持中文的,爬墙才找到这个,希望大家别入坑...js md5加密,md5支持utf-8加密,javascript md5加密,最好用js md5加密。

    MD5编码、MD5加密解密demo

    MD5编码、MD5加密解密demo代码,详看博客 对字符串进行MD5编码及MD5加密和解密

    Java实现MD5加密解密

    Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。

    批量MD5加密工具

    批量MD5加密工具,很不错。

    VBA MD5加密算法实现

    VBA MD5加密 算法

    MD5 加密算法 C++实现源码

    C++实现 MD5加密算法 可直接调用 hash1加密算法 MD5加密算法 MD5加密算法

    MD5 加密工具源码

    MD5加密单独封装一个类,可以生成16位大写(默认)或小写的(需修改源码)的密钥串。与在线MD5加密结果一致。VS2005工程。

    md5加密算法 C语言(经过测试验证完整版)

    md5加密算法 C语言(经过测试验证完整版) 经过调试验证,与工具结果一致 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash...

    md5加密算法源码,c语言源码

    md5加密算法源码: 一 \md5加密是对字符或密码进行的16位或32位等加密方式! 一般在普通MDB数据库经常用到,比如论坛数据库等.有用! 二 \加密解密并不矛盾,比如银行系统的128位加密现在谁可以轻易破的了呢? 虽然md5...

    MD5加密器.exe

    MD5加密器,用vb编写的,已生产了exe文件。 包括16位加密和32位加密两种加密方式

    md5加密算法

    密码学md5加密技术..........................................................................................................................................................................................

    VB的md5加密VB的md5加密

    VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密

    C# MD5加密 实例源码(加密解密)

    C# MD5加密 实例源码(加密解密)

Global site tag (gtag.js) - Google Analytics