java 加密解密
2008-01-28 11:20
543 查看
/**
* @(#)Eryptogram.java 1.00 04/03/11
*
* Copyright (c) 2003-2004 Abacus,Ltd.
*
* 加密解密类
*
*
*
*/
package com.abacus.common ;
import java.security. *;
import javax.crypto. *;
/**
* 加密解密类
* @author WangHu
* @version 1.00 2004年03月18日
*/
public class Eryptogram
{...
private static String Algorithm ="DES";
//定义 加密算法,可用 DES,DESede,Blowfish
static boolean debug = false ;
/**
* 构造子注解.
*/
public Eryptogram ()
{...
} /**
* 生成密钥
* @return byte[] 返回生成的密钥
* @throws exception 扔出异常.
*/
public static byte [] getSecretKey () throws Exception
{...
KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );
SecretKey deskey = keygen.generateKey ();
if (debug ) System.out.println ("生成密钥:"+byte2hex (deskey.getEncoded ()));
return deskey.getEncoded ();
} /**
* 将指定的数据根据提供的密钥进行加密
* @param input 需要加密的数据
* @param key 密钥
* @return byte[] 加密后的数据
* @throws Exception
*/
public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception
{...
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug )
{...
System.out.println ("加密前的二进串:"+byte2hex (input ));
System.out.println ("加密前的字符串:"+new String (input ));
} Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.ENCRYPT_MODE ,deskey );
byte [] cipherByte =c1.doFinal (input );
if (debug ) System.out.println ("加密后的二进串:"+byte2hex (cipherByte ));
return cipherByte ;
} /**
* 将给定的已加密的数据通过指定的密钥进行解密
* @param input 待解密的数据
* @param key 密钥
* @return byte[] 解密后的数据
* @throws Exception
*/
public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception
{...
SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );
if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));
Cipher c1 = Cipher.getInstance (Algorithm );
c1.init (Cipher.DECRYPT_MODE ,deskey );
byte [] clearByte =c1.doFinal (input );
if (debug )
{...
System.out.println ("解密后的二进串:"+byte2hex (clearByte ));
System.out.println ("解密后的字符串:"+(new String (clearByte )));
} return clearByte ;
} /**
* 字节码转换成16进制字符串
* @param byte[] b 输入要转换的字节码
* @return String 返回转换后的16进制字符串
*/
public static String byte2hex (byte [] b )
{...
String hs ="";
String stmp ="";
for (int n =0 ;n <b.length ;n ++)
{...
stmp =(java.lang.Integer.toHexString (b [n ] & 0XFF ));
if (stmp.length ()==1 ) hs =hs +"0"+stmp ;
else hs =hs +stmp ;
if (n <b.length -1 ) hs =hs +":";
} return hs.toUpperCase ();
} public static void main (String [] args )
{...
try
{...
debug = false ;
Eryptogram etg = new Eryptogram ();
byte [] key = etg.getSecretKey ();
System.out.println ("key = "+key );
String aa = "1234567";
byte [] data = aa.getBytes ();
System.out.println (data );
byte [] en = etg.encryptData (data ,key );
System.out.println ("encryptData = "+new String (en ));
byte [] de = etg.decryptData (en ,key );
System.out.println ("decryptData = "+new String (de ));
}catch (Exception e )
{...
e.printStackTrace ();
}
}
}
[code]/** * @(#)Eryptogram.java 1.00 04/03/11 * * Copyright (c) 2003-2004 Abacus,Ltd. * * 加密解密类 * * * */ package com.abacus.common; import java.security.*; import javax.crypto.*; /** * 加密解密类 * @author WangHu * @version 1.00 2004年03月18日 */ public class Eryptogram{ private static String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish static boolean debug = false; /** * 构造子注解. */ public Eryptogram(){ } /** * 生成密钥 * @return byte[] 返回生成的密钥 * @throws exception 扔出异常. */ public static byte[] getSecretKey() throws Exception{ KeyGenerator keygen = KeyGenerator.getInstance(Algorithm); SecretKey deskey = keygen.generateKey(); if (debug) System.out.println("生成密钥:"+byte2hex(deskey.getEncoded())); return deskey.getEncoded(); } /** * 将指定的数据根据提供的密钥进行加密 * @param input 需要加密的数据 * @param key 密钥 * @return byte[] 加密后的数据 * @throws Exception */ public static byte[] encryptData(byte[] input,byte[] key) throws Exception{ SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm); if (debug){ System.out.println("加密前的二进串:"+byte2hex(input)); System.out.println("加密前的字符串:"+new String(input)); } Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.ENCRYPT_MODE,deskey); byte[] cipherByte=c1.doFinal(input); if (debug) System.out.println("加密后的二进串:"+byte2hex(cipherByte)); return cipherByte; } /** * 将给定的已加密的数据通过指定的密钥进行解密 * @param input 待解密的数据 * @param key 密钥 * @return byte[] 解密后的数据 * @throws Exception */ public static byte[] decryptData(byte[] input,byte[] key) throws Exception{ SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm); if (debug) System.out.println("解密前的信息:"+byte2hex(input)); Cipher c1 = Cipher.getInstance(Algorithm); c1.init(Cipher.DECRYPT_MODE,deskey); byte[] clearByte=c1.doFinal(input); if (debug){ System.out.println("解密后的二进串:"+byte2hex(clearByte)); System.out.println("解密后的字符串:"+(new String(clearByte))); } return clearByte; } /** * 字节码转换成16进制字符串 * @param byte[] b 输入要转换的字节码 * @return String 返回转换后的16进制字符串 */ public static String byte2hex(byte[] b) { String hs=""; String stmp=""; for (int n=0;n
相关文章推荐
- Android 3DES加密解密(JAVA和C#)
- php aes 加密解密可与java对接
- java加密解密--密钥库,密钥格式-01
- Java使用RSA加密解密签名及校验
- Java使用RSA加密解密及签名校验
- C# 实现 JAVA AES加密解密[原创]
- RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密
- Java数字证书对文件/加密/解密/签名/校验签名
- java 加密之RSA算法加密与解密的实例详解
- java加密解密--keytool 用法
- 第十七篇:JAVA加密解密之PBE(Password Based Encryption)算法
- Java加密解密 -Jasypt
- Java与js完成des+3des加密 、解密
- Java BASE64加密解密
- java RSA 加密/解密
- (黑马)总结一:Java 加密解密简单例子
- JAVA和C# 3DES加密解密
- java 加密之RSA算法加密与解密的实例详解
- Java数字证书对文件、加密、解密、签名、校验签名(二)