732003684

导航

3des加解密

package com.ct.test3des;

import java.io.ByteArrayOutputStream;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Test3DES triDEs = new Test3DES();
        String str="dada1234567=";
        String bytes=triDEs.encode(str);
        System.out.println("bytes:"+bytes);
        byte[] keyBytes=triDEs.encode(str).getBytes();
        System.out.println(">>"+keyBytes.length);
        String szSrc = "This is a 3DES test.";
        System.out.println("加密前的字符串:" + szSrc);
        byte[] encoded = triDEs.encryptMode(keyBytes, szSrc.getBytes());
        System.out.println("加密后的字符串:" + new String(encoded));
        byte[] srcBytes = triDEs.decryptMode(keyBytes, encoded);
        System.out.println("解密后的字符串:" + new String(srcBytes));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    class Test3DES  {
        private static final String Algorithm = "DESede";
        private static final String hexString="0123456789ABCDEF";
        
        public byte[] encryptMode(byte[] keybyte, byte[] src) {
            try {
            // 根据给定的字节数组和算法构造一个密钥
            SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
            // 加密
            Cipher c1 = Cipher.getInstance(Algorithm);
            c1.init(Cipher.ENCRYPT_MODE, deskey);
            return c1.doFinal(src);
            } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
            } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
            } catch (java.lang.Exception e3) {
            e3.printStackTrace();
            }
            return null;
            }
        
        public byte[] decryptMode(byte[] keybyte, byte[] src) {
            try {
            // 生成密钥
            SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
            // 解密
            Cipher c1 = Cipher.getInstance(Algorithm);
            c1.init(Cipher.DECRYPT_MODE, deskey);
            return c1.doFinal(src);
            } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
            } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
            } catch (java.lang.Exception e3) {
            e3.printStackTrace();
            }
            return null;
            }
        
        public  String encode(String str) 
        { 
        //根据默认编码获取字节数组 
        byte[] bytes=str.getBytes(); 
        StringBuilder sb=new StringBuilder(bytes.length*2); 

        //将字节数组中每个字节拆解成2位16进制整数 
        for(int i=0;i<bytes.length;i++) 
        { 
        sb.append(hexString.charAt((bytes[i]&0xf0)>>4)); 
        sb.append(hexString.charAt((bytes[i]&0x0f)>>0)); 
        } 
        return sb.toString(); 
        }
        
        public  String decode(String bytes) 
        { 
        ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2); 
        //将每2位16进制整数组装成一个字节 
        for(int i=0;i<bytes.length();i+=2) 
        baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1)))); 
        return new String(baos.toByteArray()); 
        } 

        public  String byte2hex(byte[] b) {
        String hs = "";
        String stmp = "";
        for (int n = 0; n < b.length; n++) {
        stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
        if (stmp.length() == 1)
        hs = hs + "0" + stmp;
        else
        hs = hs + stmp;
        if (n < b.length - 1)
        hs = hs + ":";
        }
        return hs.toUpperCase();
        }
        
        
        
        
        
    }

}

 

posted on 2013-03-13 14:29  732003684  阅读(595)  评论(0编辑  收藏  举报