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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lyrsa.java

?? JAVA開發的
?? JAVA
字號:
package ly.util;

import javax.crypto.Cipher;

import sun.security.provider.Sun;

import java.security.*;
import java.security.spec.RSAPublicKeySpec;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.InvalidKeySpecException;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.io.*;
import java.math.BigInteger;

/**
 * RSA 工具類。提供加密,解密,生成密鑰對等方法。
 * 
 */
public class lyRSA {

	/**
	 * 生成密鑰對
	 * 
	 * @return KeyPair
	 * @throws EncryptException
	 */
	public static KeyPair generateKeyPair(int key_size) throws EncryptException {
		try {
			KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());
			//KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",new Sun());
			final int KEY_SIZE = key_size;// Key長度 默認使用1024
			keyPairGen.initialize(KEY_SIZE, new SecureRandom());
			KeyPair keyPair = keyPairGen.genKeyPair();
			return keyPair;
		} catch (Exception e) {
			throw new EncryptException(e.getMessage());
		}
	}

	/**
	 * 生成公鑰
	 * 
	 * @param modulus
	 * @param publicExponent
	 * @return RSAPublicKey
	 * @throws EncryptException
	 */
	public static RSAPublicKey generateRSAPublicKey(byte[] modulus,
			byte[] publicExponent) throws EncryptException {
		KeyFactory keyFac = null;
		try {
			keyFac = KeyFactory.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());
			//keyFac = KeyFactory.getInstance("RSA",new Sun());
		} catch (NoSuchAlgorithmException ex) {
			throw new EncryptException(ex.getMessage());
		}

		RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(
				modulus), new BigInteger(publicExponent));
		try {
			return (RSAPublicKey) keyFac.generatePublic(pubKeySpec);
		} catch (InvalidKeySpecException ex) {
			throw new EncryptException(ex.getMessage());
		}
	}

	/**
	 * 生成私鑰
	 * 
	 * @param modulus
	 * @param privateExponent
	 * @return RSAPrivateKey
	 * @throws EncryptException
	 */
	public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus,
			byte[] privateExponent) throws EncryptException {
		KeyFactory keyFac = null;
		try {
			keyFac = KeyFactory.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());
			//keyFac = KeyFactory.getInstance("RSA",new Sun());
		} catch (NoSuchAlgorithmException ex) {
			throw new EncryptException(ex.getMessage());
		}

		RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(
				modulus), new BigInteger(privateExponent));
		try {
			return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);
		} catch (InvalidKeySpecException ex) {
			throw new EncryptException(ex.getMessage());
		}
	}

	/**
	 * 加密
	 * 
	 * @param key
	 *            加密的密鑰
	 * @param data
	 *            待加密的明文數據
	 * @return 加密后的數據
	 * @throws EncryptException
	 */
	public static byte[] encrypt(Key key, byte[] data) throws EncryptException {
		try {
			Cipher cipher = Cipher.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());
			//Cipher cipher = Cipher.getInstance("RSA",new Sun());
			cipher.init(Cipher.ENCRYPT_MODE, key);
			int blockSize = cipher.getBlockSize();// 獲得加密塊大小,如:加密前數據為128個byte,而key_size=1024
													// 加密塊大小為127
													// byte,加密后為128個byte;因此共有2個加密塊,第一個127
													// byte第二個為1個byte
			int outputSize = cipher.getOutputSize(data.length);// 獲得加密塊加密后塊大小
			int leavedSize = data.length % blockSize;
			int blocksSize = leavedSize != 0 ? data.length / blockSize + 1
					: data.length / blockSize;
			byte[] raw = new byte[outputSize * blocksSize];
			int i = 0;
			while (data.length - i * blockSize > 0) {
				if (data.length - i * blockSize > blockSize)
					cipher.doFinal(data, i * blockSize, blockSize, raw, i
							* outputSize);
				else
					cipher.doFinal(data, i * blockSize, data.length - i
							* blockSize, raw, i * outputSize);
				// 這里面doUpdate方法不可用,查看源代碼后發現每次doUpdate后并沒有什么實際動作除了把byte[]放到ByteArrayOutputStream中,而最后doFinal的時候才將所有的byte[]進行加密,可是到了此時加密塊大小很可能已經超出了OutputSize所以只好用dofinal方法。

				i++;
			}
			return raw;
		} catch (Exception e) {
			throw new EncryptException(e.getMessage());
		}
	}

	/**
	 * 解密
	 * 
	 * @param key
	 *            解密的密鑰
	 * @param raw
	 *            已經加密的數據
	 * @return 解密后的明文
	 * @throws EncryptException
	 */
	public static byte[] decrypt(Key key, byte[] raw) throws EncryptException {
		try {
			Cipher cipher = Cipher.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider());
			//Cipher cipher = Cipher.getInstance("RSA",new Sun());
			cipher.init(cipher.DECRYPT_MODE, key);
			int blockSize = cipher.getBlockSize();
			ByteArrayOutputStream bout = new ByteArrayOutputStream(64);
			int j = 0;

			while (raw.length - j * blockSize > 0) {
				bout.write(cipher.doFinal(raw, j * blockSize, blockSize));
				j++;
			}
			return bout.toByteArray();
		} catch (Exception e) {
			throw new EncryptException(e.getMessage());
		}
	}
/*
 
	public static void main(String[] args) throws Exception {
		File file = new File("test.html");
		FileInputStream in = new FileInputStream(file);
		ByteArrayOutputStream bout = new ByteArrayOutputStream();
		byte[] tmpbuf = new byte[1024];
		int count = 0;
		while ((count = in.read(tmpbuf)) != -1) {
			bout.write(tmpbuf, 0, count);
			tmpbuf = new byte[1024];
		}
		in.close();
		byte[] orgData = bout.toByteArray();
		
		KeyPair keyPair = lyRSA.generateKeyPair(1024);
		RSAPublicKey pubKey = (RSAPublicKey) keyPair.getPublic();
		RSAPrivateKey priKey = (RSAPrivateKey) keyPair.getPrivate();

		byte[] pubModBytes = pubKey.getModulus().toByteArray();//取得公要模
		byte[] pubPubExpBytes = pubKey.getPublicExponent().toByteArray();//取得公要指數
		byte[] priModBytes = priKey.getModulus().toByteArray();//取得私要模
		byte[] priPriExpBytes = priKey.getPrivateExponent().toByteArray();//取得私要指數
		RSAPublicKey recoveryPubKey = lyRSA.generateRSAPublicKey(pubModBytes,
				pubPubExpBytes);
		RSAPrivateKey recoveryPriKey = lyRSA.generateRSAPrivateKey(priModBytes,
				priPriExpBytes);

		byte[] raw = lyRSA.encrypt(priKey, orgData);
		file = new File("encrypt_result.dat");
		OutputStream out = new FileOutputStream(file);
		out.write(raw);
		out.close();
		byte[] data = lyRSA.decrypt(recoveryPubKey, raw);
		file = new File("decrypt_result.html");
		out = new FileOutputStream(file);
		out.write(data);
		out.flush();
		out.close();
	}
* 
*/
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩专区在线视频| 成人免费一区二区三区视频| 成人视屏免费看| 青娱乐精品视频在线| 亚洲欧美自拍偷拍| 久久一区二区三区四区| 欧美日本免费一区二区三区| 色综合天天综合网天天狠天天| 国产精品一二三四区| 美日韩一区二区| 奇米四色…亚洲| 亚洲成a人片在线不卡一二三区| 亚洲人成7777| 亚洲精品视频免费观看| 亚洲欧美一区二区在线观看| 欧美酷刑日本凌虐凌虐| 欧美色倩网站大全免费| 91黄视频在线| 99久久精品国产麻豆演员表| 成人一区二区三区中文字幕| 国产超碰在线一区| 久久99深爱久久99精品| 久久99九九99精品| 国产在线精品免费av| 国产美女精品人人做人人爽| 韩国欧美国产1区| 国产成人在线视频免费播放| 久久精品72免费观看| 另类成人小视频在线| 狠狠色丁香久久婷婷综| 国产成人精品亚洲午夜麻豆| 成人国产精品免费观看| 一本色道久久综合亚洲91| caoporm超碰国产精品| 色哟哟精品一区| 91成人免费在线| 91精品国产免费| 26uuu欧美日本| 2021国产精品久久精品| 国产精品午夜电影| 一区二区三区国产精华| 日日夜夜精品视频免费| 久久99精品久久久| 精品制服美女丁香| 成人禁用看黄a在线| 欧美日韩一级黄| 国产精品久久福利| 久久精品99国产精品| 欧美午夜精品免费| 椎名由奈av一区二区三区| 久久99精品久久只有精品| 在线观看免费亚洲| 国产欧美一区二区三区在线看蜜臀 | av网站一区二区三区| 91精品国产综合久久香蕉的特点 | 精品国产一区二区亚洲人成毛片 | 秋霞午夜鲁丝一区二区老狼| 91啪亚洲精品| 久久综合九色综合97婷婷女人| 亚洲一二三区在线观看| 93久久精品日日躁夜夜躁欧美| 久久综合丝袜日本网| 人人精品人人爱| 欧美日韩中文一区| 夜夜精品视频一区二区| 91在线看国产| 成人免费在线观看入口| 高清国产一区二区三区| 精品国产伦一区二区三区免费| 天堂久久一区二区三区| 欧美色综合天天久久综合精品| 亚洲色图另类专区| 91在线云播放| 亚洲免费在线看| 色国产综合视频| 亚洲综合视频在线观看| 91国模大尺度私拍在线视频| 亚洲欧洲国产日本综合| 91影院在线观看| 一区二区中文视频| av网站免费线看精品| 中文字幕中文乱码欧美一区二区 | 日韩视频免费直播| 日本午夜一本久久久综合| 91精品国产综合久久香蕉麻豆| 午夜精品福利视频网站| 777xxx欧美| 蜜桃精品在线观看| 国产调教视频一区| yourporn久久国产精品| 一区二区三区 在线观看视频| 欧美自拍偷拍午夜视频| 午夜不卡av免费| 精品美女被调教视频大全网站| 国产真实乱子伦精品视频| 国产亚洲欧美激情| 97久久精品人人做人人爽50路| 亚洲精品日韩一| 91精品欧美综合在线观看最新| 九九**精品视频免费播放| 欧美激情资源网| 欧美日韩亚洲综合| 久久成人免费电影| 中日韩免费视频中文字幕| 色拍拍在线精品视频8848| 日韩av中文字幕一区二区| 亚洲精品在线免费观看视频| jlzzjlzz亚洲日本少妇| 亚洲影视在线播放| 久久亚洲欧美国产精品乐播| 99这里都是精品| 美女视频一区在线观看| 最新日韩av在线| 精品久久一二三区| 欧美精选午夜久久久乱码6080| 麻豆精品一区二区| 亚洲激情图片一区| 久久一区二区三区四区| 欧美在线免费视屏| 国产精品18久久久久| 亚洲成人三级小说| 欧美国产精品一区二区| 欧美精品乱码久久久久久按摩| 成人亚洲精品久久久久软件| 日韩国产一区二| 亚洲免费观看高清完整版在线 | 午夜av区久久| 国产蜜臀97一区二区三区| 欧美日韩精品欧美日韩精品一综合| 国产精品亚洲а∨天堂免在线| 亚洲国产日韩av| 亚洲人成亚洲人成在线观看图片| 欧美www视频| 欧美日韩夫妻久久| 91成人看片片| 91原创在线视频| 国产成人免费视频一区| 精品中文字幕一区二区| 午夜精品久久久久久久| 一级做a爱片久久| 中文字幕日韩av资源站| 国产日韩视频一区二区三区| 日韩一区二区精品| 欧美高清视频一二三区| 欧美日韩在线直播| 欧美中文字幕久久| 欧美伊人久久久久久久久影院| 国产成人高清在线| 国产精品一品二品| 国产传媒一区在线| 国产精品一卡二卡| 粉嫩av亚洲一区二区图片| 激情国产一区二区| 国产剧情在线观看一区二区| 蜜桃视频在线一区| 国内精品伊人久久久久av一坑| 免费美女久久99| 精品亚洲porn| 国产精品亚洲成人| 懂色av一区二区三区免费看| 成人av在线网站| 91在线一区二区| 欧美最猛性xxxxx直播| 欧美日韩一区二区三区在线看| 欧美美女bb生活片| 91精品国产欧美一区二区| 精品免费日韩av| 日本一区二区动态图| 亚洲精品视频观看| 婷婷久久综合九色综合伊人色| 日本不卡的三区四区五区| 另类的小说在线视频另类成人小视频在线 | caoporm超碰国产精品| 一本大道av一区二区在线播放| 在线精品视频一区二区三四| 91精品国模一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 国产区在线观看成人精品| 亚洲人成亚洲人成在线观看图片 | 欧美性感一区二区三区| 欧美日韩不卡在线| 精品成人私密视频| 亚洲天堂网中文字| 男男gaygay亚洲| www.视频一区| 91精品国产品国语在线不卡| 中日韩av电影| 秋霞午夜av一区二区三区| 成人黄色av电影| 884aa四虎影成人精品一区| 久久精品欧美日韩精品| 亚洲精品美国一| 九九视频精品免费| 色婷婷综合久久久久中文一区二区| 欧美一区二区私人影院日本| 国产精品第五页| 精品制服美女丁香| 在线一区二区视频| 欧美国产国产综合| 美国三级日本三级久久99|