• 大小: 6KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: Java
  • 标签:

资源简介

简单的数字签名系统、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

评论

共有 条评论

相关资源