Some words about me

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas a urna sit amet leo sagittis cursus a at lectus. Donec bibendum facilisis ultricies. Maecenas nec arcu dui, ut lobortis erat. In nec condimentum quam. Vivamus euismod scelerisque ligula vitae fermentum. Nulla dignissim rutrum eleifend.

Donec mi eros, congue ut consectetur eget, pretium vitae orci. Aliquam pharetra ultricies lobortis. Morbi eget nisi lectus. Maecenas felis augue, molestie in vestibulum et, lacinia et leo. Suspendisse potenti. Maecenas eget est augue. Donec tincidunt mollis fermentum.

Contact me?

 
 
 

Donec mi eros, congue ut consectetur eget, pretium vitae orci. Aliquam pharetra ultricies lobortis. Morbi eget nisi lectus. Maecenas felis augue, molestie in vestibulum et, lacinia et leo. Suspendisse potenti. Maecenas eget est augue. Donec tincidunt mollis fermentum.

Send the message
 

初步加密思想

   作为我们这一行,最重要的就是保护数据。。。所以,在接受服务端的数据或者传送过去的时候,我们都要保护好·自己的数据,这样起步,谁也不伤害谁!嘿嘿。。。

   然后自己这里呢,有一个的demo,这样是吧加密提取出来的,然后想要用,随时可以用就ok!

     这是base64:

package com.android.utills;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Base64 {

    private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
            .toCharArray();

    /**
     * data[]进行编码
     * 
     * @param data
     * @return
     */
    public static String encode(byte[] data) {
        int start = 0;
        int len = data.length;
        StringBuffer buf = new StringBuffer(data.length * 3 / 2);

        int end = len - 3;
        int i = start;
        int n = 0;

        while (i <= end) {
            int d = ((((int) data[i]) & 0x0ff) << 16)
                    | ((((int) data[i + 1]) & 0x0ff) << 8)
                    | (((int) data[i + 2]) & 0x0ff);

            buf.append(legalChars[(d >> 18) & 63]);
            buf.append(legalChars[(d >> 12) & 63]);
            buf.append(legalChars[(d >> 6) & 63]);
            buf.append(legalChars[d & 63]);

            i += 3;

            if (n++ >= 14) {
                n = 0;
                buf.append(" ");
            }
        }

        if (i == start + len - 2) {
            int d = ((((int) data[i]) & 0x0ff) << 16)
                    | ((((int) data[i + 1]) & 255) << 8);

            buf.append(legalChars[(d >> 18) & 63]);
            buf.append(legalChars[(d >> 12) & 63]);
            buf.append(legalChars[(d >> 6) & 63]);
            buf.append("=");
        } else if (i == start + len - 1) {
            int d = (((int) data[i]) & 0x0ff) << 16;

            buf.append(legalChars[(d >> 18) & 63]);
            buf.append(legalChars[(d >> 12) & 63]);
            buf.append("==");
        }

        return buf.toString();
    }

    private static int decode(char c) {
        if (c >= 'A' && c <= 'Z')
            return ((int) c) - 65;
        else if (c >= 'a' && c <= 'z')
            return ((int) c) - 97 + 26;
        else if (c >= '0' && c <= '9')
            return ((int) c) - 48 + 26 + 26;
        else
            switch (c) {
            case '+':
                return 62;
            case '/':
                return 63;
            case '=':
                return 0;
            default:
                throw new RuntimeException("unexpected code: " + c);
            }
    }

    /**
     * Decodes the given Base64 encoded String to a new byte array. The byte
     * array holding the decoded data is returned.
     */

    public static byte[] decode(String s) {

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        try {
            decode(s, bos);
        } catch (IOException e) {
            throw new RuntimeException();
        }
        byte[] decodedBytes = bos.toByteArray();
        try {
            bos.close();
            bos = null;
        } catch (IOException ex) {
            System.err.println("Error while decoding BASE64: " + ex.toString());
        }
        return decodedBytes;
    }

    private static void decode(String s, OutputStream os) throws IOException {
        int i = 0;

        int len = s.length();

        while (true) {
            while (i < len && s.charAt(i) <= ' ')
                i++;

            if (i == len)
                break;

            int tri = (decode(s.charAt(i)) << 18)
                    + (decode(s.charAt(i + 1)) << 12)
                    + (decode(s.charAt(i + 2)) << 6)
                    + (decode(s.charAt(i + 3)));

            os.write((tri >> 16) & 255);
            if (s.charAt(i + 2) == '=')
                break;
            os.write((tri >> 8) & 255);
            if (s.charAt(i + 3) == '=')
                break;
            os.write(tri & 255);

            i += 4;
        }
    }

}

这是DES:

package com.android.utills;

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

/**
 * DES加密工具类
 */
public class DesUtil {

    private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };

    public static String encryptDES(String encryptString, String encryptKey)
            throws Exception {
        // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
        IvParameterSpec zeroIv = new IvParameterSpec(iv);
        SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
        byte[] encryptedData = cipher.doFinal(encryptString.getBytes());

        return Base64.encode(encryptedData);
    }

    public static String decryptDES(String decryptString, String decryptKey)
            throws Exception {
        byte[] byteMi = new Base64().decode(decryptString);
        IvParameterSpec zeroIv = new IvParameterSpec(iv);
        // IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
        SecretKeySpec key = new SecretKeySpec(decryptKey.getBytes(), "DES");
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
        byte decryptedData[] = cipher.doFinal(byteMi);

        return new String(decryptedData);

    }

    /*
     * private static final String ENCRYPT_TYPE = "DES"; private static String
     * defaultKey = "";// 字符串默认键值 private Cipher encryptCipher = null;// 加密工具
     * private Cipher decryptCipher = null;// 解密工具
     * 
     * public DesUtil() throws Exception { this(defaultKey); }
     *//**
     * 指定密钥构造方法
     * 
     * @param strKey
     *            指定的密钥
     * @throws Exception
     */
    /*
     * public DesUtil(String strKey) throws Exception { Security.addProvider(new
     * com.sun.crypto.provider.SunJCE()); Key key = getKey(strKey.getBytes());
     * encryptCipher = Cipher.getInstance(ENCRYPT_TYPE);
     * encryptCipher.init(Cipher.ENCRYPT_MODE, key); decryptCipher =
     * Cipher.getInstance(ENCRYPT_TYPE); decryptCipher.init(Cipher.DECRYPT_MODE,
     * key); }
     *//**
     * 加密字节数组
     * 
     * @param arr
     *            需加密的字节数组
     * @return 加密后的字节数组
     * @throws Exception
     */
    /*
     * private byte[] encryptStr(byte[] arr) throws Exception { return
     * encryptCipher.doFinal(arr); }
     *//**
     * 加密字符串
     * 
     * @param strIn
     *            需加密的字符串
     * @return 加密后的字符串
     * @throws Exception
     */
    /*
     * public String encrypt(String strIn) throws Exception { return
     * StrConvertUtil.byteArrToHexStr(encryptStr(strIn.getBytes())); }
     *//**
     * 解密字节数组
     * 
     * @param arr
     *            需解密的字节数组
     * @return 解密后的字节数组
     * @throws Exception
     */
    /*
     * private byte[] decryptStr(byte[] arr) throws Exception { return
     * decryptCipher.doFinal(arr); }
     *//**
     * 解密字符串
     * 
     * @param strIn
     *            需解密的字符串
     * @return 解密后的字符串
     * @throws Exception
     */
    /*
     * public String decrypt(String strIn) throws Exception { return new
     * String(decryptStr(StrConvertUtil.hexStrToByteArr(strIn))); }
     *//**
     * 从指定字符串生成密钥,密钥所需的字节数组长度为8位。不足8位时后面补0,超出8位只取前8位
     * 
     * @param arrBTmp
     *            构成该字符串的字节数组
     * @return 生成的密钥
     */
    /*
     * private Key getKey(byte[] arrBTmp) { byte[] arrB = new byte[8];//
     * 创建一个空的8位字节数组(默认值为0) // 将原始字节数组转换为8位 for (int i = 0; i < arrBTmp.length &&
     * i < arrB.length; i++) { arrB[i] = arrBTmp[i]; } Key key = new
     * javax.crypto.spec.SecretKeySpec(arrB, ENCRYPT_TYPE);// 生成密钥 return key; }
     */
}

 

这是MD5:

package com.android.utills;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具类
 * 
 */
public class Md5Util {

    /**
     * 根据输入的字符串生成固定的32位MD5码
     * 
     * @param str
     *            输入的字符串
     * @return MD5码
     */
    public final static String getMd5(String str) {
        MessageDigest mdInst = null;
        try {
            mdInst = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        mdInst.update(str.getBytes());// 使用指定的字节更新摘要
        byte[] md = mdInst.digest();// 获得密文
        return StrConvertUtil.byteArrToHexStr(md);
    }
}

这是转换:

package com.android.utills;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具类
 * 
 */
public class Md5Util {

    /**
     * 根据输入的字符串生成固定的32位MD5码
     * 
     * @param str
     *            输入的字符串
     * @return MD5码
     */
    public final static String getMd5(String str) {
        MessageDigest mdInst = null;
        try {
            mdInst = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        mdInst.update(str.getBytes());// 使用指定的字节更新摘要
        byte[] md = mdInst.digest();// 获得密文
        return StrConvertUtil.byteArrToHexStr(md);
    }
}

okay、。。

当然,这里还有提供详细加密的路径链接:

http://apprentice.blog.51cto.com/2214645/1381824

http://hi.baidu.com/cuihenrychl/item/751966f0c31e310acf9f32e4?qq-pf-to=pcqq.c2c

posted @ 2014-05-31 16:01  Catherine_Brain  阅读(214)  评论(0编辑  收藏  举报