java des加密 解密

import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
 
public class CryptKit {
 
     private final static String DES = "DES" ;
 
     public static void main(String args[]) throws Exception {
         String str = encrypt( "The cold night" , "12345678" );
         System.out.println(str);
         String str2 = decrypt( "63B121C4EA212F8BC74E8113BDFBFB81" , "12345678" );
         System.out.println(str2);
     }
 
     // 加密
     public static byte [] encrypt( byte [] data, byte [] key) throws Exception {
         Cipher cipher = Cipher.getInstance(DES);
         DESKeySpec ds = new DESKeySpec(key);
         SecureRandom sr = new SecureRandom();
         SecretKeyFactory skfactory = SecretKeyFactory.getInstance(DES);
         SecretKey skey = skfactory.generateSecret(ds);
         cipher.init(Cipher.ENCRYPT_MODE, skey, sr);
         byte [] b = cipher.doFinal(data);
         return b;
     }
 
     // 加密
     public static String encrypt(String data, String key) throws Exception {
         return byte2hex(encrypt(data.getBytes(), key.getBytes()));
     }
 
     // 解密
     public static byte [] decrypt( byte [] data, byte [] key) throws Exception {
         Cipher cipher = Cipher.getInstance(DES);
         DESKeySpec ds = new DESKeySpec(key);
         SecureRandom sr = new SecureRandom();
         SecretKeyFactory skfactory = SecretKeyFactory.getInstance(DES);
         SecretKey skey = skfactory.generateSecret(ds);
         cipher.init(Cipher.DECRYPT_MODE, skey, sr);
         return cipher.doFinal(data);
     }
 
     // 解密
     public static String decrypt(String data, String key) throws Exception {
         return new String(decrypt(hex2byte(data.getBytes()), key.getBytes()));
     }
 
     private static String byte2hex( byte [] b) {
         StringBuilder hs = new StringBuilder();
         String stmp;
         for ( int n = 0 ; b != null && n < b.length; n++) {
             stmp = Integer.toHexString(b[n] & 0XFF );
             if (stmp.length() == 1 )
                 hs.append( '0' );
             hs.append(stmp);
         }
         return hs.toString().toUpperCase();
     }
 
     private static byte [] hex2byte( byte [] b) {
         if ((b.length % 2 ) != 0 )
             throw new IllegalArgumentException();
         byte [] b2 = new byte [b.length / 2 ];
         for ( int n = 0 ; n < b.length; n += 2 ) {
             String item = new String(b, n, 2 );
             b2[n / 2 ] = ( byte ) Integer.parseInt(item, 16 );
         }
         return b2;
     }
<p>
}
</p>


你可能感兴趣的:(java des加密 解密)