1. 程式人生 > >Java DES 檔案加密演算法

Java DES 檔案加密演算法

DES類:

public class DESEncrypt {
	
	/** 加密工具 */
	private Cipher encryptCipher = null;

	/** 解密工具 */
	private Cipher decryptCipher = null;

        private void initialize_encryptKey(String keyValue) throws Exception{
	        Key key = getKey(keyValue.getBytes());
		encryptCipher = Cipher.getInstance("DES");
		encryptCipher.init(Cipher.ENCRYPT_MODE, key);
	}

	public void initalize_dencryptkey(String keyValue) throws Exception {
                Key key = getKey(keyValue.getBytes());
		decryptCipher = Cipher.getInstance("DES");
		decryptCipher.init(Cipher.DECRYPT_MODE, key);
	}

	/**
	 * 從指定字串生成金鑰,金鑰所需的位元組陣列長度為8位 不足8位時後面補0,超出8位只取前8位
	 * 
	 * @param arrBTmp
	 *            構成該字串的位元組陣列
	 * @return 生成的金鑰
	 * @throws java.lang.Exception
	 */
	private Key getKey(byte[] arrBTmp) throws Exception {
		// 建立一個空的8位位元組陣列(預設值為0)
		byte[] arrB = new byte[8];

		// 將原始位元組陣列轉換為8位
		for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
			arrB[i] = arrBTmp[i];
		}
		// 生成金鑰
		Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES");
		return key;
	}

	/**
	 * 加密位元組陣列
	 * 
	 * @param arrB
	 *            需加密的位元組陣列
	 * @return 加密後的位元組陣列
	 * @throws Exception
	 */
	public byte[] encrypt(byte[] arrB) throws Exception {
		return encryptCipher.doFinal(arrB);
	}

	/**
	 * 解密位元組陣列
	 * 
	 * @param arrB
	 *            需解密的位元組陣列
	 * @return 解密後的位元組陣列
	 * @throws Exception
	 */
	public byte[] decrypt(byte[] arrB) throws Exception {
		return decryptCipher.doFinal(arrB);
	}

	/**
	 * 檔案file進行加密並儲存目標檔案destFile中
	 * 
	 * @param file
	 *            要加密的檔案 如c:/test/srcFile.txt
	 * @param destFile
	 *            加密後存放的檔名 如c:/加密後文件.txt
	 */
	public void encrypt(String sourceFileName, String diminationFileName) throws Exception {
		InputStream is = new FileInputStream(sourceFileName);
		OutputStream out = new FileOutputStream(diminationFileName);
		CipherInputStream cis = new CipherInputStream(is, encryptCipher);
		byte[] buffer = new byte[1024];
		int r;
		while ((r = cis.read(buffer)) > 0) {
			out.write(buffer, 0, r);
		}
		cis.close();
		is.close();
		out.close();
	}

	/**
	 * 檔案採用DES演算法解密檔案
	 * 
	 * @param file
	 *            已加密的檔案 如c:/加密後文件.txt * @param destFile 解密後存放的檔名 如c:/
	 *            test/解密後文件.txt
	 */
	public void decrypt(String sourceFileName, String diminationFileName) throws Exception {
		InputStream is = new FileInputStream(sourceFileName);
		OutputStream out = new FileOutputStream(diminationFileName);
		CipherOutputStream cos = new CipherOutputStream(out, decryptCipher);
		byte[] buffer = new byte[1024];
		int r;
		while ((r = is.read(buffer)) >= 0) {
			cos.write(buffer, 0, r);
		}
		cos.close();
		out.close();
		is.close();
	}

}


相關推薦

Java DES 檔案加密演算法

DES類: public class DESEncrypt { /** 加密工具 */ private Cipher encryptCipher = null; /** 解密工具 */ private Cipher decryptCipher = null;

JAVA 常用的加密演算法之對稱加密DES、3DES和AES

1、對稱加密演算法 1.1 定義 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文(原始資料)和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰

Java常用對稱加密演算法-DES

直接上程式碼import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.SecureRandom; impo

Java工具類-加密演算法

    import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; pub

一個簡單且安全的檔案加密演算法------抑或加密

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c# AES DES MD5加密演算法

MD5加密封裝   MD5常用加密FormsAuthentication.HashPasswordForStoringInConfigFile在Net Freamwork4.5以後就不在支援,下面整理了32位或16位下的幾個方法,以及不同寫法,最後一個由從老版本遷移過來,後續淘汰不用。 us

Java非對稱加密演算法RSA

流程分析:  甲方構建金鑰對兒,將公鑰公佈給乙方,將私鑰保留。 甲方使用私鑰加密資料,然後用私鑰對加密後的資料簽名,傳送給乙方簽名以及加密後的資料;乙方使用公鑰、簽名來驗證待解密資料是否有效,如果有效使用公鑰對資料解密。 乙方使用公鑰加密資料,向甲方傳送經過加密後的資料

使用java自帶加密演算法實現文字的md5加密演算法

       本篇使用java自帶的MessageDigest實現對文字的md5加密演算法,具體程式碼如下: /** *@Description: 將字串轉化為MD5 */ packa

JAVA利用RSA加密演算法的長度限制問題解決完整程式碼

package com.additional; import java.io.ByteArrayOutputStream;   import java.security.Key;   import java.security.KeyFactory;   import jav

加密演算法學習總結---DES-CBC加密演算法

DES-CBC機密演算法 DES全稱為Data Encryption Standard,即資料加密標準,是一種使用金鑰加密的塊演算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),並授權在非密級政府通訊中使用,隨後該演算法在國際

java的對稱加密演算法 AES -----加密和解密

背景 隨著對稱密碼的發展,DES資料加密標準演算法由於金鑰長度較小(56位),已經不適應當今分散式開放網路對資料加密安全性的要求,因此1997年NIST公開徵集新的資料加密標準,即AES[1]。經過三輪的篩選,比利時Joan Daeman和Vincent Rijmen提

java中的加密演算法

資料的加密,在資料傳輸過程中是常用到的,前面幾天在公眾號上看到一篇文章講的加密演算法,感覺寫得很不錯,於是乎記錄寫自己感覺重要的再加上寫自己的理解並粘上程式碼。 一.什麼是加密演算法資料加密的基本過程就是對原來為明文的檔案或資料按某種演算法進行處理,使其成為不可讀的一段程式碼,通常稱為“密文”,

DES--可逆加密演算法-密文可控

package main; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import

DES對稱加密演算法在(.NET Framework) C#中的使用

關於對稱加密演算法,這個不多作解釋,百度百科給出的說明如下:des對稱加密,對稱加密,是一種比較傳統的加密方式,其加密運算、解密運算使用的是同樣的金鑰,資訊的傳送者和資訊的接收者在進行資訊的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼),是一種對稱加密演算法。簡而言之就是用

JavaDES加解密演算法簡介及實現

Java加密解密之對稱加密演算法DES   資料加密演算法(Data Encryption Algorithm,DEA)是一種對稱加密演算法,很可能是使用最廣泛的金鑰系統,特別是在保護金融資料的安全中,最初開發的DEA是嵌入硬體中的。通常,自動取款機(Aut

Java常用對稱加密演算法-AES

import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import java.security.SecureRandom; import jav

java之對稱加密演算法

對稱加密演算法是以一種使用頻率高的初等的加密演算法,如你所想,之所以稱之為對稱加密演算法,說明加密祕鑰是相同,加密過程可逆,而前面介紹的base64加密,和訊息摘要加密演算法是不可逆的.一般的對稱加密演算法有DES,DES祕鑰長度不夠,易被破解,進而衍生出了3D

java的HMACSHA1加密演算法

前期做一個和Q+相關的專案時,雙方要進行一些資料的校驗,對方規定的校驗規則是通過hmac-sha1演算法(fcg語言採用hash_hmac方法),並給出了一個例子:sig=hash_hmac("sha1","app_id=10001app_lang=2052app_nonc

Java實現檔案DES加密與解密演算法

一、基礎知識       根據金鑰型別不同將現代密碼技術分為兩類:對稱加密演算法(祕金鑰匙加密)和非對稱加密演算法(公開金鑰加密)。對稱鑰匙加密系統是加密和解密均採用同一把祕金鑰匙,而且通訊雙方都必須獲得這把鑰匙,並保持鑰匙的祕密。非對稱金鑰加密系統採用的加金鑰匙(公鑰)和

DES加密演算法java實現(基於java類庫)

嗯嗯........這個是我新開的部落格上的第一篇的文章,這裡小白希望自己的技術能夠一天比一天好(p≧w≦q),加油! 好吧,現在來一個基於java類庫的DES加密演算法的實現吧~網上不少的程式碼要不執行有問題,要不就是簡簡單單內建一個固定的加密字串就簡單完事了。好吧,我承認我現在是為懶人服務