亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? desedetools.java

?? Java加密組件實(shí)現(xiàn)DES、RSA和SHA加密算法,Java加密組件實(shí)現(xiàn)DES、RSA和SHA加密算法
?? JAVA
字號:
package com.gmc.algorithms;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

import com.gmc.algorithms.Base64;
import com.gmc.crypto.SymmetryEncrypt;

/**
 * Desede加密算法,實(shí)現(xiàn)了對字符串,文件,數(shù)據(jù)流的加解密功能,加密時密如為null,可自動生成Des密鑰,供加密使用,解密操作必須傳入密鑰
 * 否則不能進(jìn)行解密操作
 * @author wanna
 *
 */
public class DesedeTools implements SymmetryEncrypt
{

	private final static String algorithm = "DESede"; // 對稱加密算法

	private SecretKey desKey; // 密鑰

	private FileInputStream fis; 

	private FileOutputStream fos;

	public DesedeTools()
	{
	}

	/**
	 *加密
	 * 
	 * @param plainText
	 *           明文 字節(jié)數(shù)組形式
	 * @param key
	 *            加密的密鑰,如果為null,會自動生成一個密鑰供加密使用,可用getKey()方法獲得此密鑰
	 * @return 密文
	 * @throws Exception
	 */
	public String encrypt(byte[] plainText, Key key) throws Exception
	{
		if (plainText == null || plainText.length == 0)
		{
			return null;
		}
		this.setDesKey(key); //根據(jù)傳入密鑰情況設(shè)置加密密鑰

		return Base64.encode(this.basicEncrypt(plainText)); // Base64進(jìn)行編碼轉(zhuǎn)換
	}

	/**
	 * 加密
	 * 
	 * @param plainText
	 *            明文
	 * @param key
	 *           加密的密鑰,如果為null,會自動生成一個密鑰供加密使用,可用getKey()方法獲得此密鑰
	 * @return  密文
	 * @throws Exception
	 */
	public String encrypt(String plainText, Key key) throws Exception
	{
		if (plainText == null)
		{
			return null;
		}
		this.setDesKey(key);

		byte[] input = plainText.getBytes();

		return Base64.encode(this.basicEncrypt(input));
	}

	/**
	 * 加密 ,對文件進(jìn)行加密,加密后,密文信息存放在護(hù)展名為.djm,與file相同目錄下的文件中。
	 * 例:  file:		F:\1.txt
	 *     密文  :     F:\1.txt.djm
	 * 
	 * @param file
	 *           明文
	 * @param key
	 *          加密所需的密鑰,如果key為null,則自動生成一個密鑰用于加密,加密后可通過getKey()方法獲得此密鑰
	 * @return 存放有密文信息的文件 
	 * @throws Exception
	 */
	public File encrypt(File file, Key key) throws Exception
	{
		if (file == null)
		{
			return null;
		}
		if (!file.exists() || file.isDirectory())
		{
			return null;
		}

		try
		{
			this.setDesKey(key);
			fis = new FileInputStream(file);
			byte[] input = this.getByteFromStream(fis); //獲取輸入流中的數(shù)據(jù)

			byte[] output = this.basicEncrypt(input);

			String cipherFilePath = file.getPath() + ".djm";

			File fileOut = new File(cipherFilePath);

			fos = new FileOutputStream(fileOut);

			for (int i = 0; i < output.length; i++)
			{
				fos.write((int) output[i]);               //將密文信息寫入文件
			}
			System.out.println("Des加密文件成功");
			return fileOut;                              //密文
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw e;

		}
		finally
		{
			this.closeStream();                            //關(guān)閉流
		}
	}

	/**
	 * 加密,對輸入流中的數(shù)據(jù)進(jìn)行加密處理,加密后,將密文信息存儲在指定文件(cipherPath)中
	 * @param plainText   輸入流
	 * @param key         加密密鑰,如果為null,則自動生成一個密鑰
	 * @param cipherPath  加密后,存放密文信息的文件路徑
	 * @return  存放密文信息的文件
	 * @throws Exception
	 */
	public File encrypt(InputStream plainText, Key key, String cipherPath) throws Exception
	{
		if (plainText == null)
		{
			return null;
		}
		if (cipherPath == null || cipherPath.equals(""))
		{
			return null;
		}
		try
		{
			this.setDesKey(key);
			
			byte[] input = this.getByteFromStream(plainText);    //獲取輸入流中的數(shù)據(jù)信息
			
			byte[] output = this.basicEncrypt(input);			  //加密

			File fileOut = new File(cipherPath);

			fos = new FileOutputStream(fileOut);

			for (int i = 0; i < output.length; i++)
			{
				fos.write((int) output[i]);                      
			}
			System.out.println("流加密成功!");
			return fileOut;                                    
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw e;
		}
		finally
		{
			this.closeStream();        
		}
	}

	/**
	 * 
	 * 解密
	 * 
	 * @param cipherText 密文
	 * @param key        解密密鑰
	 * @return           明文信息
	 * @throws Exception
	 */
	public String decrypt(byte[] cipherText, Key key) throws Exception
	{
		if (cipherText == null || cipherText.length == 0)
		{
			return null;
		}
		if (key == null)
		{
			return null;
		}
		else
		{
			this.desKey = (SecretKey) key;
		}
		byte[] input = Base64.decode(cipherText); // 用Base64對加密后的字節(jié)數(shù)組進(jìn)行解碼
		return new String(this.basicDecrypt(input));
	}

	/**
	 * 解密 如果解密密鑰key為null,則不能進(jìn)行解密操作
	 * 
	 * @param cipherText   密文
	 * @param key         解密所需的密鑰Key
	 * @return            明文信息(字符串形式)  
	 * @throws Exception
	 */
	public String decrypt(String cipherText, Key key) throws Exception
	{
		if (cipherText == null)
		{
			return null;
		}
		if (key == null)
		{
			return null;
		}
		else
		{
			this.desKey = (SecretKey) key;
		}

		byte[] input = Base64.decode(cipherText);

		return new String(this.basicDecrypt(input));
	}

	/**
	 * 解密,對擴(kuò)展名為.djm,存有密文信息的文件進(jìn)行解密操作,解密存放明文件信息的文件與cipherFile在同一目錄下
	 * 例:    cipherFile 			F;\1.txt.djm
	 *   解密后存放明文信息的文件為 	F:\1.txt   
	 * @param cipherFile   存有密文信息的文件 擴(kuò)展名為.djm
	 * @param key           解密密鑰 
	 * @return         存有明文件信息的文件   
	 * @throws Exception
	 */
	public File decrypt(File cipherFile, Key key) throws Exception
	{
		if (cipherFile == null)
		{
			return null;
		}
		if (!cipherFile.exists() || cipherFile.isDirectory())
		{
			return null;
		}

		if (key == null)
		{
			return null;
		}

		this.desKey = (SecretKey) key;                     //設(shè)置解密密鑰

		try
		{
			String strPath = cipherFile.getPath();
			if (!strPath.substring(strPath.length() - 4).toLowerCase().equals(".djm"))
			{
				// 只對擴(kuò)展名為.djm,存儲密文信息的文件進(jìn)行解密處理
				return null;
			}

			fis = new FileInputStream(cipherFile);

			byte[] input = this.getByteFromStream(fis);

			byte[] output = this.basicDecrypt(input);

			String outFilePath = strPath.substring(strPath.length() - 4);

			File fileOut = new File(outFilePath);           // 解密后 存儲明文信息的文件

			fos = new FileOutputStream(fileOut);

			for (int i = 0; i < output.length; i++)
			{
				fos.write((int) output[i]);
			}
			System.out.println("文件解密成功");
			return fileOut;

		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			this.closeStream();
		}

		return null;
	}

	/**
	 * 解密 對輸入流中的密文數(shù)據(jù)解密,解密后的明文存儲在指定文件中(plainPath)
	 * @param cipherText  存有密文信息的輸入流
	 * @param key         解密所需的密鑰
	 * @param plainPath   解密后,明文所存放的文件路徑
	 * @return 解密后,存有明文信息的文件
	 * @throws Exception
	 */
	public File decrypt(InputStream cipherText, Key key, String plainPath) throws Exception
	{
		if (cipherText == null || key == null)
		{
			return null;
		}
		if (plainPath == null || plainPath.equals(""))
		{
			return null;
		}
		try
		{
			this.desKey = (SecretKey) key;

			byte[] input = this.getByteFromStream(cipherText);   //獲取輸入流中的數(shù)據(jù)

			byte[] output = this.basicDecrypt(input);            //解密

			File outputFile = new File(plainPath);
			fos = new FileOutputStream(outputFile);

			for (int i = 0; i < output.length; i++)
			{
				fos.write((int) output[i]);
			}
			System.out.println("流解密成功");
			return outputFile;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw e;
		}
		finally
		{
			this.closeStream();
		}
	}

	/**
	 * 獲得加密/解密操作的密鑰
	 * @return  加密/解密操作所用的密鑰Key
	 * @throws Exception
	 */
	public Key getKey() throws Exception
	{
		return desKey;
	}

	/**
	 * 解密處理后的密文數(shù)據(jù)(字節(jié)數(shù)組形式)
	 * @param input   要進(jìn)行加密的字節(jié)數(shù)據(jù)
	 * @return      加密處理后的密文數(shù)據(jù)(字節(jié)數(shù)組形式)
	 * @throws Exception
	 */
	private byte[] basicEncrypt(byte[] input) throws Exception
	{
		Cipher cipher = null;
		try
		{
			cipher = Cipher.getInstance(algorithm);        //鍒涘緩鍔犲瘑鎵?闇?鐨凜ipher綾?

			cipher.init(Cipher.ENCRYPT_MODE, this.desKey); // 鐢ㄥ瘑閽ュ垵濮嬪寲姝? cipher銆?

			return cipher.doFinal(input);                  //瀹屾垚鍔犲瘑榪愮畻
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw e;
		}
	}

	/**
	 *實(shí)現(xiàn)基本的解密功能,供其它方法調(diào)用
	 * 
	 * @param input 要進(jìn)行解密的字節(jié)數(shù)據(jù)
	 * @return    解密處理后的密文數(shù)據(jù)(字節(jié)數(shù)組形式)
	 * @throws Exception
	 */
	private byte[] basicDecrypt(byte[] input) throws Exception
	{
		Cipher cipher = null;
		try
		{
			cipher = Cipher.getInstance(algorithm);

			cipher.init(Cipher.DECRYPT_MODE, this.desKey);   //鐢ㄥ瘑閽ュ垵濮嬪寲姝? cipher銆?

			return cipher.doFinal(input);                   //

		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw e;
		}
	}

	/**
	 * 設(shè)置加密密鑰,如果key為null,則調(diào)用generateDesKey()方法生成Des密鑰Key供加密使用
	 *              如果非null,則使用傳入的密鑰進(jìn)行加密操作
	 * 
	 * @param key 
	 * @throws Exception
	 */
	private void setDesKey(Key key) throws Exception
	{
		if (key == null)
		{
			desKey = (SecretKey) this.generateDesKey();
		}
		else
		{
			desKey = (SecretKey) key;
		}
	}

	/**
	 * 生成Desede算法的密鑰
	 * 
	 * @return
	 */
	private Key generateDesKey() throws Exception
	{

		// KeyGenerator錕?
		KeyGenerator keyGen = null;
		SecretKey sekey = null;
		try
		{
			keyGen = KeyGenerator.getInstance(algorithm);   //根據(jù)加密算法獲得KeyGenerator對象,密鑰生成器
			keyGen.init(168);                               //初始化密鑰長度
			sekey = keyGen.generateKey();                   //生成 密鑰
		}
		catch (NoSuchAlgorithmException e)
		{
			e.printStackTrace();
			throw e;
		}

		return sekey;
	}

	/**
	 * 獲取輸入流中的數(shù)據(jù),以字節(jié)數(shù)組形式返回
	 * 
	 * @param is   輸入流
	 * @return     以字節(jié)數(shù)組形式返回輸入流中的數(shù)據(jù)
	 * @throws Exception
	 */
	private byte[] getByteFromStream(InputStream is) throws Exception
	{
		int length = -1;
		ArrayList temp = new ArrayList();

		while ((length = is.read()) != -1)
		{
			temp.add((byte) length);
		}

		byte[] out = new byte[temp.size()];
		for (int i = 0; i < temp.size(); i++)
		{
			Byte byt = (Byte) temp.get(i);
			out[i] = byt.byteValue();
		}
		return out;
	}
	
	/**
	 * 關(guān)閉流
	 * @throws Exception
	 */
	private void closeStream() throws Exception
	{
		if (fis != null)
		{
			fis.close();
		}
		if (fos != null)
		{
			fos.close();
		}
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人的天堂在线aⅴ视频| 99精品久久免费看蜜臀剧情介绍| 不卡一区中文字幕| 首页欧美精品中文字幕| 国产精品一区免费在线观看| 欧美日韩专区在线| 国产亚洲欧美激情| 日本不卡视频一二三区| 91免费视频网址| 久久免费美女视频| 午夜精品视频一区| 91福利资源站| 亚洲色欲色欲www在线观看| 精品无人码麻豆乱码1区2区| 欧美嫩在线观看| 亚洲视频在线一区| 丁香婷婷综合网| 久久久91精品国产一区二区精品 | 裸体一区二区三区| 91在线观看高清| 国产日韩欧美麻豆| 美美哒免费高清在线观看视频一区二区 | 久久亚洲欧美国产精品乐播 | 成人白浆超碰人人人人| 日韩亚洲欧美成人一区| 亚洲h精品动漫在线观看| 91在线视频播放地址| 中文字幕乱码久久午夜不卡| 国产永久精品大片wwwapp| 91精品国产一区二区三区| 香蕉影视欧美成人| 欧美在线观看你懂的| 亚洲主播在线播放| 在线观看亚洲成人| 亚洲一区影音先锋| 欧美日本一道本在线视频| 亚洲一二三四久久| 欧美aaaaa成人免费观看视频| 欧美日韩三级视频| 亚洲伊人伊色伊影伊综合网| 亚洲狠狠爱一区二区三区| 91国偷自产一区二区开放时间 | 国产精品视频在线看| 国产一区999| 国产拍揄自揄精品视频麻豆| 粉嫩一区二区三区在线看| 中文字幕成人网| 色综合久久久久网| 一区二区不卡在线播放| 欧美片网站yy| 国产中文字幕精品| 国产精品美女久久久久久久网站| jvid福利写真一区二区三区| 亚洲宅男天堂在线观看无病毒| 欧美日韩一级大片网址| 久久国产精品第一页| 欧美国产视频在线| 在线国产亚洲欧美| 精品一区二区三区视频| 国产精品国产三级国产普通话蜜臀 | 丰满白嫩尤物一区二区| 1区2区3区精品视频| 在线观看国产91| 久久精品国产第一区二区三区| 欧美大度的电影原声| 国产精品99久久久久久久vr| 国产精品高潮呻吟| 3atv在线一区二区三区| 国产成人午夜高潮毛片| 亚洲一区二区中文在线| 欧美白人最猛性xxxxx69交| 波多野洁衣一区| 美腿丝袜亚洲色图| 国产精品国产三级国产有无不卡| 欧美一区在线视频| 91蝌蚪porny| 国内精品第一页| 亚洲一区在线观看网站| 国产亚洲精品aa| 这里只有精品电影| 99这里只有久久精品视频| 蜜臂av日日欢夜夜爽一区| 亚洲激情图片小说视频| 精品久久国产97色综合| 在线观看一区二区精品视频| 国产成人鲁色资源国产91色综 | 欧美伊人久久大香线蕉综合69| 日本午夜精品视频在线观看| www.日韩大片| 看电影不卡的网站| 亚洲成人av一区二区| 中文字幕av资源一区| 日韩欧美一区二区免费| 欧美特级限制片免费在线观看| 粉嫩欧美一区二区三区高清影视| 国产做a爰片久久毛片| 日韩久久一区二区| 久久久噜噜噜久噜久久综合| 欧美一区二区视频观看视频| 91在线一区二区三区| 国产精品一区久久久久| 美女一区二区视频| 日本午夜一区二区| 性久久久久久久| 五月天激情小说综合| 亚洲美女少妇撒尿| 中文字幕一区三区| 中文字幕第一区| 国产精品久久久久久久久免费相片| 精品国免费一区二区三区| 日韩一区二区三区三四区视频在线观看| 91在线你懂得| 色88888久久久久久影院野外| youjizz国产精品| 成人精品一区二区三区中文字幕| 国产在线麻豆精品观看| 国产剧情一区二区| 国产精品一级在线| 国产精品白丝jk黑袜喷水| 国产一区二区在线视频| 久久 天天综合| 国产麻豆日韩欧美久久| 国产精品亚洲成人| 中文字幕的久久| 日韩美女精品在线| 亚洲欧美一区二区久久| 亚洲综合丁香婷婷六月香| 亚洲成av人片一区二区三区| 亚洲va欧美va人人爽| 男男视频亚洲欧美| 国内成人精品2018免费看| 国产酒店精品激情| 91看片淫黄大片一级在线观看| 99久久免费国产| 欧美视频在线观看一区二区| 欧美日韩1区2区| 久久天堂av综合合色蜜桃网 | 7777精品伊人久久久大香线蕉超级流畅 | 韩国av一区二区三区| 久久99久久精品| 国产99久久久久| 不卡在线观看av| 欧美在线影院一区二区| 日韩午夜激情电影| 国产日韩精品一区二区浪潮av | 国产综合色视频| 精品无人区卡一卡二卡三乱码免费卡 | 日韩午夜小视频| 久久人人爽人人爽| 亚洲私人黄色宅男| 爽好多水快深点欧美视频| 国产麻豆视频一区二区| 欧美主播一区二区三区| 亚洲精品在线网站| 亚洲人成电影网站色mp4| 免费不卡在线观看| 成人美女视频在线观看18| 欧美日韩视频专区在线播放| 国产欧美1区2区3区| 亚洲一区在线观看网站| 蜜桃91丨九色丨蝌蚪91桃色| 成人黄色小视频| 制服丝袜av成人在线看| 中文字幕亚洲综合久久菠萝蜜| 日日骚欧美日韩| 成年人网站91| 日韩一区二区三区电影在线观看 | 欧美韩国日本不卡| 午夜精品久久久| 91日韩在线专区| 久久天天做天天爱综合色| 日韩黄色片在线观看| 91在线你懂得| 国产欧美精品一区二区色综合朱莉 | 亚洲国产成人91porn| 国产精品亚洲人在线观看| 欧美日韩成人综合天天影院| 中文字幕第一区综合| 国产一区91精品张津瑜| 911精品国产一区二区在线| 国产精品传媒入口麻豆| 777欧美精品| 欧美美女bb生活片| 一区二区久久久久久| 国产·精品毛片| 久久综合色婷婷| 美女www一区二区| 欧美一区二区免费| 婷婷丁香久久五月婷婷| 在线国产电影不卡| 亚洲一卡二卡三卡四卡五卡| 一本高清dvd不卡在线观看| 国产精品进线69影院| 本田岬高潮一区二区三区| 久久精品日韩一区二区三区| 国产一区二区三区最好精华液| 欧美电视剧免费全集观看| 亚洲一区二区三区四区在线免费观看 | 在线观看欧美精品| 欧美日韩精品一区视频|