Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android、web中的圖片和語音的加密

Android、web中的圖片和語音的加密

編輯:關於Android編程

由於一個銀行的項目需要,項目app的Android客戶端和web端均需要對客戶端上傳至服務器的文件(語音、圖片)
進行加密。加密實現方式是使用javax.crypto包中提供的類,這些類中最主要的是Cipher類。
Android項目中實現的步驟如下:
1、根據我們指定的strkey生成一個用於加密解密的key
2、加密文件,根據key加密文件
3、解密文件,根據key解密文件

代碼如下:

        /**
	 * 根據參數生成KEY
	 */
	public String getKey(String strKey) {
		try {
			byte[] keyByte = strKey.getBytes();
			// 創建一個空的八位數組,默認情況下為0
			byte[] byteTemp = new byte[8];
			// 將用戶指定的規則轉換成八位數組
			for (int i = 0; i < byteTemp.length && i < keyByte.length; i++) {
				byteTemp[i] = keyByte[i];
			}
			return  new SecretKeySpec(byteTemp, "DES");
		} catch (Exception e) {
			throw new RuntimeException(
					"Error initializing SqlMap class. Cause: " + e);
		}
	}
	// 加密文件
	public void encrypt(String file, String destFile) throws Exception {
		Cipher cipher = Cipher.getInstance("DES");
		// cipher.init(Cipher.ENCRYPT_MODE, getKey());
		cipher.init(Cipher.ENCRYPT_MODE, this.key);
		InputStream is = new FileInputStream(file);
		OutputStream out = new FileOutputStream(destFile);
		CipherInputStream cis = new CipherInputStream(is, cipher);
		byte[] buffer = new byte[1024];
		int r;
		while ((r = cis.read(buffer)) > 0) {
			out.write(buffer, 0, r);
		}
		cis.close();
		is.close();
		out.close();
		File img2 = new File(file);
		CommUtil.delete(img2);
	}
	// 解密文件,此為Android端的,web端加密手段也一樣
	public Bitmap decrypt(String file, String dest) throws Exception {
		Bitmap bitmapOriginal = null;
		Cipher cipher = Cipher.getInstance("DES");
		cipher.init(Cipher.DECRYPT_MODE, this.key);
		InputStream is = new FileInputStream(file);
		OutputStream out = new FileOutputStream(dest);
		CipherOutputStream cos = new CipherOutputStream(out, cipher);
		byte[] buffer = new byte[1024];
		int r;
		while ((r = is.read(buffer)) >= 0) {
			cos.write(buffer, 0, r);
		}
		cos.close();
		out.close();
		is.close();
		InputStream openis = new FileInputStream(dest);
		bitmapOriginal = BitmapFactory.decodeStream(openis);
		openis.close();
		File img2 = new File(dest);
		CommUtil.delete(img2);
		return bitmapOriginal;

	}

strKey是我們自己配置的,用於生成加密和解密的key,strkey為了安全起見和配置靈活,項目中是放在服務器中的,每當登陸Android客戶端,
strKey就被發送至客戶端。有些文件操作方式不需要和服務器一致的,這些strkey可以使用jni的方式寫在c代碼中。





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