package data; 
import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; import java.io.*; 
/**  * Security 提供了一个安全算法类,其中包括对称密码算法和散列算法  */ public final class Security {  /**   * 对称加密方法   * @param byteSource 需要加密的数据   * @return 经过加密的数据   * @throws Exception   */  public static byte[] symmetricEncrypto(byte[] byteSource) throws Exception  {   ByteArrayOutputStream baos = new ByteArrayOutputStream();   try   {    int mode = Cipher.ENCRYPT_MODE;    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");    byte[] keyData = {1, 9, 8, 2, 0, 8, 2, 1};    DESKeySpec keySpec = new DESKeySpec(keyData);    Key key = keyFactory.generateSecret(keySpec);    Cipher cipher = Cipher.getInstance("DES");    cipher.init(mode, key);    int blockSize = cipher.getBlockSize();    int position = 0;    int length = byteSource.length;    boolean more = true;    while(more)    {     if(position + blockSize <= length)     {      baos.write(cipher.update(byteSource, position, blockSize));      position += blockSize;     }     else     {      more = false;     }    }    if(position < length)    {     baos.write(cipher.doFinal(byteSource, position, length - position));    }    else    {     baos.write(cipher.doFinal());    }    return baos.toByteArray();   }   catch(Exception e)   {    throw e;   }   finally   {    baos.close();   }  }  /**   * 对称解密方法   * @param byteSource 需要解密的数据   * @return 经过解密的数据   * @throws Exception   */  public static byte[] symmetricDecrypto(byte[] byteSource) throws Exception  {   ByteArrayOutputStream baos = new ByteArrayOutputStream();   try   {    int mode = Cipher.DECRYPT_MODE;    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");    byte[] keyData = {1, 9, 8, 2, 0, 8, 2, 1};    DESKeySpec keySpec = new DESKeySpec(keyData);    Key key = keyFactory.generateSecret(keySpec);    Cipher cipher = Cipher.getInstance("DES");    cipher.init(mode, key);    int blockSize = cipher.getBlockSize();    int position = 0;    int length = byteSource.length;    boolean more = true;    while(more)    {     if(position + blockSize <= length)     {      baos.write(cipher.update(byteSource, position, blockSize));      position += blockSize;     }     else     {      more = false;     }    }    if(position < length)    {     baos.write(cipher.doFinal(byteSource, position, length - position));    }    else    {     baos.write(cipher.doFinal());    }    return baos.toByteArray();   }   catch(Exception e)   {    throw e;   }   finally   {    baos.close();   }  }  /**   * 散列算法   * @param byteSource 需要散列计算的数据   * @return 经过散列计算的数据   * @throws Exception   */  public static byte[] hashMethod(byte[] byteSource) throws Exception  {   try   {    MessageDigest currentAlgorithm = MessageDigest.getInstance("SHA-1");    currentAlgorithm.reset();    currentAlgorithm.update(byteSource);    return currentAlgorithm.digest();   }   catch(Exception e)   {    throw e;   }  } }  
 
  |