android中的加密传输

来源:互联网 发布:网络巫师泰剧中字3 编辑:程序博客网 时间:2024/05/23 13:02

找到两种加密算法,一种MD5加密,适用于密码加密,因为这种算法不可逆;还有一种是RSA加密,这种加密是可逆的:

一、MD5加密

 

 

import java.security.MessageDigest; public class MD5 {         private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",                         "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };         /**          * 转换字节数组为16进制字串          *          * @param b          *            字节数组          * @return 16进制字串          */         public static String byteArrayToHexString(byte[] b) {                 StringBuffer resultSb = new StringBuffer();                 for (int i = 0; i < b.length; i++) {                         resultSb.append(byteToHexString(b[i]));                 }                 return resultSb.toString();         }         private static String byteToHexString(byte b) {                 int n = b;                 if (n < 0)                         n = 256 + n;                 int d1 = n / 16;                 int d2 = n % 16;                 return hexDigits[d1] + hexDigits[d2];         }         public static String MD5Encode(String origin) {                 String resultString = null;                 try {                         resultString = new String(origin);                         MessageDigest md = MessageDigest.getInstance("MD5");                         resultString = byteArrayToHexString(md.digest(resultString                                         .getBytes()));                 } catch (Exception ex) {                 }                 return resultString;         } }


 

二、RSA加密

 

import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import javax.crypto.Cipher; /** * RSAEncrypt * * @author chen * @see */ public class Rsaencrype {    /**      * Main method for RSAEncrypt.      * @param args      */     public static void main(String[] args) {         try {             Rsaencrype encrypt = new Rsaencrype();                          String encryptText = "encryptText";             KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");             keyPairGen.initialize(1024);             KeyPair keyPair = keyPairGen.generateKeyPair();             // Generate keys             RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();             RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();                          byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes());             byte[] de = encrypt.decrypt(privateKey,e);             System.out.println(encrypt.bytesToString(e));             System.out.println(encrypt.bytesToString(de));         } catch (Exception e) {             e.printStackTrace();         }     }         /**      * Change byte array to String.      * @return byte[]      */     protected String bytesToString(byte[] encrytpByte) {         String result = "";         for (Byte bytes : encrytpByte) {             result += (char) bytes.intValue();         }         return result;     }         /**      * Encrypt String.      * @return byte[]      */     protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj)  {         if (publicKey != null) {             try {                 Cipher cipher = Cipher.getInstance("RSA");                 cipher.init(Cipher.ENCRYPT_MODE, publicKey);                 return cipher.doFinal(obj);             } catch (Exception e) {                 e.printStackTrace();             }         }         return null;     }     /**      * Basic decrypt method      * @return byte[]      */     protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) {         if (privateKey != null) {                 try {                     Cipher cipher = Cipher.getInstance("RSA");                     cipher.init(Cipher.DECRYPT_MODE, privateKey);                     return cipher.doFinal(obj);                 } catch (Exception e) {                     e.printStackTrace();                 }             }             return null;     } }