看这个贴子
http://expert.csdn.net/Expert/topic/726/726335.xml?temp=.6038629

解决方案 »

  1.   

    这个程序可以对字符串和文件进行加、解密,希望对你有用import java.io.*;
    import java.security.spec.*;
    import javax.crypto.*;
    import javax.crypto.spec.*;
        
    public class DesEncrypter 
    {
    Cipher ecipher;
    Cipher dcipher;

    // 8-byte Salt
    byte[] salt = 
    {
    (byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
    (byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03
    };
        
    // Iteration count
    int iterationCount = 19; DesEncrypter(SecretKey key) 
    {
    // Create an 8-byte initialization vector
    byte[] iv = new byte[]{
    (byte)0x8E, (byte)0x12, (byte)0x39, (byte)0x9C,
    (byte)0x07, (byte)0x72, (byte)0x6F, (byte)0x5A
    };

    AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
    try 
    {
    ecipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
    dcipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); // CBC requires an initialization vector
    ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
    dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

    catch (java.security.InvalidAlgorithmParameterException e) 
    {

    catch (javax.crypto.NoSuchPaddingException e) 
    {

    catch (java.security.NoSuchAlgorithmException e) 
    {
    }
    catch (java.security.InvalidKeyException e) 
    {
    }
    }

    DesEncrypter(String passPhrase) 
    {
    try 
    {
    // Create the key
    KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
    SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
    ecipher = Cipher.getInstance(key.getAlgorithm());
    dcipher = Cipher.getInstance(key.getAlgorithm());

    // Prepare the parameter to the ciphers
    AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);

    // Create the ciphers
    ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
    dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

    catch (java.security.InvalidAlgorithmParameterException e) 
    {

    catch (java.security.spec.InvalidKeySpecException e) 
    {

    catch (javax.crypto.NoSuchPaddingException e) 
    {

    catch (java.security.NoSuchAlgorithmException e) 
    {

    catch (java.security.InvalidKeyException e) 
    {
    }
    } // Buffer used to transport the bytes from one stream to another
    byte[] buf = new byte[1024]; public void encrypt(InputStream in, OutputStream out) 
    {
    try 
    {
    // Bytes written to out will be encrypted
    out = new CipherOutputStream(out, ecipher); // Read in the cleartext bytes and write to out to encrypt
    int numRead = 0;
    while ((numRead = in.read(buf)) >= 0) 
    {
       out.write(buf, 0, numRead);
    }
    out.close();

    catch (java.io.IOException e) 
    {
    }
    } public void decrypt(InputStream in, OutputStream out) 
    {
    try 
    {
    // Bytes read from in will be decrypted
    in = new CipherInputStream(in, dcipher); // Read in the decrypted bytes and write the cleartext to out
    int numRead = 0;
    while ((numRead = in.read(buf)) >= 0) 
    {
       out.write(buf, 0, numRead);
    }
    out.close();

    catch (java.io.IOException e) 
    {
    }
    }
        
    public String encrypt(String str) 
    {
    try 
    {
    // Encode the string into bytes using utf-8
    byte[] utf8 = str.getBytes("UTF8");

    // Encrypt
    byte[] enc = ecipher.doFinal(utf8);

    // Encode bytes to base64 to get a string
    return new sun.misc.BASE64Encoder().encode(enc);

    catch (javax.crypto.BadPaddingException e) 
    {

    catch (IllegalBlockSizeException e) 
    {

    catch (UnsupportedEncodingException e) 
    {

    catch (java.io.IOException e) 
    {
    }
    return null;
    }

    public String decrypt(String str) 
    {
    try 
    {
    // Decode base64 to get bytes
    byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);

    // Decrypt
    byte[] utf8 = dcipher.doFinal(dec);

    // Decode using utf-8
    return new String(utf8, "UTF8");

    catch (javax.crypto.BadPaddingException e) 
    {

    catch (IllegalBlockSizeException e) 
    {

    catch (UnsupportedEncodingException e) 
    {

    catch (java.io.IOException e) 
    {
    }
    return null;
    }
    }