资源简介
简单的数字签名系统、java、可运行、简单的数字签名系统
代码片段和文件信息
package jct;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.security.Key;
import java.security.KeyFactory;
import java.security.spec.EncodedKeySpec;
import java.security.Security;
import java.security.*;
import java.util.Random;
import java.util.Vector;
/**
* 封装同Blowfish对称加密算法有关的方法,包括了使用创建Blowfish密码,使用Blowfish加密、解密 使用PBE(基于口令的加密)存取blowfiwsh密码
* @Copyright:WDSsoft
* @ad:WDSsoft “企业多级数字签名系统”- 最佳的企业电子文档多级数字签名方案
* @URL:www.wdssoft.com
* @作者 吴东升 mdss@wdssoft.com bluesunday@sohu.com
*/
public class BlowfishTool {
public BlowfishTool() {
}
/**
* 使用Blowfish加密
* @param Key key:密码
* @param byte[] text:明文
* @return byte[]:密文
*/
public static byte[] encryptReturnByte(Key keybyte[] text){
try{
Cipher cipher=Cipher.getInstance(“Blowfish/ECB/PKCS5Padding“);
cipher.init(Cipher.ENCRYPT_MODEkey);
return cipher.doFinal(text);
}catch(Exception e){ return null; }
}
/**
* Blowfish解密
* @param Key key:密码
* @param byte[] text:密文
* @return byte[] : 明文
*/
public static byte[] decryptReturnByte(Key keybyte[] text){
try{
Cipher cipher=Cipher.getInstance(“Blowfish/ECB/PKCS5Padding“);
cipher.init(Cipher.DECRYPT_MODEkey);
return cipher.doFinal(text);
}catch(Exception e){ return null;}
}
/**
* 使用PBE保管Blowfish密码
* @param Key targetKey: Blowfish密码
* @param char[] password: 口令
* @return Vector-element1:byte[]:密文-element2:byte[]:盐
*/
public static Vector wrapKey(Key targetKeychar[] password){
try{
PBEKeySpec keySpec=new PBEKeySpec(password);
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(“PBEWithMD5AndDES“);
SecretKey key=keyFactory.generateSecret(keySpec);
Cipher cipher=Cipher.getInstance(“PBEWithMD5AndDES“);
byte[] salt=new byte[8];
Random random=new Random();
random.nextBytes(salt);
PBEParameterSpec paramSpec=new PBEParameterSpec(salt100);
cipher.init(cipher.WRAP_MODEkeyparamSpec);
Vector encryptedKey=new Vector();
encryptedKey.addElement(cipher.wrap(targetKey));
encryptedKey.addElement(salt);
return encryptedKey;
}catch(Exception e){e.printStackTrace();
return null;
}
}
/**
* 取出PBE加密的密钥
* @param Vector encryptedKey-element1:byte[]:密文-element2:byte[]:盐
* @param char[] password:口令
* @return Key:Blowfish密码
*/
public static Key unwrapKey(Vector encryptedKeychar[] password){
try{
byte[] wrapedKey=(byte[])encryptedKey.elementAt(0);
byte[] salt=(byte[])encryptedKey.elementAt(1);
PBEKeySpec keySpec=new PBEKeySpec(password);
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(“PBEWithMD5AndDES“);
SecretKey key=keyFactory.generateSecret(keySpec);
Cipher cipher=Cipher.getInstance(“PBEWithMD5AndDES“);
PBEParameterSpec paramSpec=new PBEParameterSpec(salt100);
ciph
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2006-01-04 17:55 jct\
文件 5047 2006-01-04 20:59 jct\RSATool.java
文件 2015 2006-01-04 20:59 jct\Digest.java
文件 4078 2006-01-04 20:59 jct\BlowfishTool.java
文件 4672 2006-01-04 20:59 jct\PBETool.java
文件 616 2006-01-04 21:28 jct\_Readme.java
评论
共有 条评论