Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android、iPhone和Java三個平台一致的加密工具

Android、iPhone和Java三個平台一致的加密工具

編輯:Android開發教程

先前一直在做安卓,最近要開發iPhone客戶端,這其中遇到的最讓人糾結的要屬Java、Android和iPhone三 個平台加解密不一致的問題。因為手機端後台通常是用JAVA開發的Web Service,Android和iPhone客戶端調用 同樣的Web Service接口,為了數據安全考慮,要對數據進行加密。頭疼的問題就來了,很難編寫出一套加密 程序,在3個平台間加解密的結果一致,總不能為Android和iPhone兩個客戶端各寫一套Web Service接口吧? 我相信還會有很多朋友為此困惑,在此分享一套3DES加密程序,能夠實現Java、Android和iPhone三個平台加 解密一致。

首先是JAVA端的加密工具類,它同樣適用於Android端,無需任何修改,即可保證Java與 Android端的加解密一致,並且中文不會亂碼。

package org.liuyq.des3;  
      
import java.security.Key;  
      
import javax.crypto.Cipher;  
import javax.crypto.SecretKeyFactory;  
import javax.crypto.spec.DESedeKeySpec;  
import javax.crypto.spec.IvParameterSpec;  
      
/** 
 * 3DES加密工具類 
 *  
 * @author liufeng  
 * @date 2012-10-11 
 */
public class Des3 {  
    // 密鑰  
    private final static String secretKey = "liuyunqiang@lx100$#365#$";  
    // 向量  
    private final static String iv = "01234567";  
    // 加解密統一使用的編碼方式  
    private final static String encoding = "utf-8";  
      
    /** 
     * 3DES加密 
     *  
     * @param plainText 普通文本 
     * @return 
     * @throws Exception  
     */
    public static String encode(String plainText) throws Exception {  
        Key deskey = null;  
        DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());  
        SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");  
        deskey = keyfactory.generateSecret(spec);  
      
        Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");  
        IvParameterSpec ips = new IvParameterSpec(iv.getBytes());  
        cipher.init(Cipher.ENCRYPT_MODE, deskey, ips);  
        byte[] encryptData = cipher.doFinal(plainText.getBytes(encoding));  
        return Base64.encode(encryptData);  
    }  
      
    /** 
     * 3DES解密 
     *  
     * @param encryptText 加密文本 
     * @return 
     * @throws Exception 
     */
    public static String decode(String encryptText) throws Exception {  
        Key deskey = null;  
        DESedeKeySpec spec = new DESedeKeySpec(secretKey.getBytes());  
        SecretKeyFactory keyfactory = SecretKeyFactory.getInstance("desede");  
        deskey = keyfactory.generateSecret(spec);  
        Cipher cipher = Cipher.getInstance("desede/CBC/PKCS5Padding");  
        IvParameterSpec ips = new IvParameterSpec(iv.getBytes());  
        cipher.init(Cipher.DECRYPT_MODE, deskey, ips);  
      
        byte[] decryptData = cipher.doFinal(Base64.decode(encryptText));  
      
        return new String(decryptData, encoding);  
    }  
}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved