3des加密算法的Java實現

import javax.crypto.Cipher;  
import javax.crypto.SecretKey;  
import javax.crypto.spec.SecretKeySpec;  
public class CipherTest {  
    public static void main(String[] args) {  
        try {  
            byte[] keydata = { (byte) 0x00, (byte) 0x01, (byte) 0x02,  
                    (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06,  
                    (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x0a,  
                    (byte) 0x0b, (byte) 0x0c, (byte) 0x0d, (byte) 0x0e,  
                    (byte) 0x0f, (byte) 0x10, (byte) 0x11, (byte) 0x12,  
                    (byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16,  
                    (byte) 0x17, };  
            String algorithm = "DESede";  
            String clearTextString = "I wanna be with you.";  
            String encoding = "US-ASCII";  
            // javax.crypto.spec.DESedeKeySpec  
            SecretKey key = new SecretKeySpec(keydata, algorithm);  
            Cipher cipher = Cipher.getInstance(algorithm);  
            byte[] clearText = clearTextString.getBytes(encoding);  
            cipher.init(Cipher.ENCRYPT_MODE, key);  
            byte[] encryptedText = cipher.doFinal(clearText);  
            cipher.init(Cipher.DECRYPT_MODE, key);  
            byte[] decryptedText = cipher.doFinal(encryptedText);  
            System.out.println("********************************************");  
            System.out.println(new String(clearText, encoding));  
            System.out.println(bytesToString(clearText));  
            System.out.println("********************************************");  
            System.out.println(new String(encryptedText, encoding));  
            System.out.println(bytesToString(encryptedText));  
            System.out.println("********************************************");  
            System.out.println(new String(decryptedText, encoding));  
            System.out.println(bytesToString(decryptedText));  
            System.out.println("********************************************");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    private static String bytesToString(byte[] b) {  
        if (b == null)  
            return null;  
        StringBuffer sb = null;  
        sb = new StringBuffer();  
        for (int i = 0; i < b.length; i++) {  
            sb.append(Integer.toString((int) ((b[i] >> 4) & 0x0F), 16));  
            sb.append(Integer.toString((int) (b[i] & 0x0F), 16));  
        }  
        return sb.toString().toUpperCase();  
    }  
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章