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

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

?? rsaencrypt.java

?? 該程序包提供了三種加解密算法的源代碼:DES、AES和RSA。程序沒有使用Java的security庫
?? JAVA
字號:
package myCode.rsaCryptography;

//這是RSA原型加密算法,實際應用時還應當加入一些隨機化的技術。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class RsaEncrypt {
	private byte[] N_num = null;
	private byte[] E_num = null;
	private byte[] D_num = null;
	
	public byte[] encrypt (byte[] mess) {
		byte[] out = null;
		out = this.exp(mess, this.E_num, this.N_num);
		return out;
	}
	
	public byte[] decrypt (byte[] enc) {
		byte[] out = null;
		out = this.exp(enc, this.D_num, this.N_num);
		return out;
	}
	
	public byte[] decrypt2 (byte[] enc) {
		byte[] out = null;
		byte[] temp = null;
		int m, n, k;
		out = this.exp(enc, this.D_num, this.N_num);
		m = out.length;
		if (out[0] != 0x2) {
			System.out.println("解碼錯誤!");
			return null;
		}
		for (n=1; n<m; n++) {
			if (out[n] == 0)
				break;
		}
		if (n < 9) {
			System.out.println("解碼錯誤!");
			return null;
		}
		if (n >= (m-1)) {
			System.out.println("解碼錯誤!");
			return null;
		}
		temp = out;
		m = m-n-1;
		out = new byte[m];
		for (k=0; k<m; k++) {
			out[k] = temp[k+n+1];
		}
		return out;
	}
	
	private byte[] sha1 (byte[] mess) {
		byte[] out = null;
		MessageDigest md;
		try {
			md = MessageDigest.getInstance("sha1");
			md.reset();
			md.update(mess);
			out = md.digest();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return out;
	}
	
	private byte[] md5 (byte[] mess) {
		byte[] out = null;
		MessageDigest md;
		try {
			md = MessageDigest.getInstance("md5");
			md.reset();
			md.update(mess);
			out = md.digest();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return out;
	}
	
	private byte[] yihuo (byte[] in1, byte[] in2) {
		byte[] out = null;
		int n = in1.length;
		int k;
		out =  new byte[n];
		for (k=0; k<n; k++) {
			out[k] = (byte)(in1[k] ^ in2[k]);
		}
		return out;
	}
	
	public byte[] add (byte[] in1, byte[] in2) {
		byte[] out = null;
		byte[] add = null;
		int n, n1, n2, k, temp, carry;
		n1 = in1.length;
		n2 = in2.length;
		if (n1 < n2)
			n = n2;
		else
			n = n1;
		out = new byte[n];
		add = new byte[n];
		for (k=0; k<n; k++) {
			out[k] = 0;
			add[k] = 0;
		}
		for (k=0; k<n1; k++) {
			out[k+n-n1] = in1[k];
		}
		for (k=0; k<n2; k++) {
			add[k+n-n2] = in2[k];
		}
		carry = 0;
		for (k=n-1; k>=0; k--) {
			temp = (out[k] & 0xFF) + (add[k] & 0xFF) + carry;
			out[k] = (byte) (temp & 0xFF);
			carry = temp >> 8;
		}
		if (carry > 0) {
			add = out;
			out = new byte[n+1];
			for (k=1; k<=n; k++) {
				out[k] = add[k-1];
			}
			out[0] = (byte) carry;
		}
		n1 = out.length;
		n2 = 0;
		for (n2=0; n2<n1-1; n2++) {
			if (out[n2] != 0)
				break;
		}
		if (n2>0) {
			add = out;
			n1 = n1-n2;
			out = new byte[n1];
			for (k=0; k<n1; k++) {
				out[k] = add[k+n2];
			}
		}
		return out;
	}
	
	public byte[] subtract (byte[] in1, byte[] in2) {
		/*if (!this.biggerEqual(in1, in2)) {
			System.out.println("被減數"+this.byte2hex(in1)+" 減數"+this.byte2hex(in2));
			System.out.println("錯誤:減數大于了被減數。");
			return null;
		}*/
		byte[] out = null;
		byte[] sub = null;
		int n1 = in1.length;
		int n2 = in2.length;
		int k;
		sub = new byte[n1];
		for (k=0; k<n1; k++) 
			sub[k] = (byte) 0xFF;
		for (k=0; k<n2; k++)
			sub[k+n1-n2] = (byte)(0xFF - (in2[k] & 0xFF));
		byte[] one = new byte[1];
		one[0] = 1;
		sub = add(sub, one);
		sub = add(sub, in1);
		if (sub.length != (n1+1))
			out = sub;
		else {
			out = new byte[n1];
			for (k=0; k<n1; k++) {
				out[k] = sub[k+1];
			}
		}
		n2 = 0;
		for (n2=0; n2<n1-1; n2++) {
			if (out[n2] != 0)
				break;
		}
		if (n2>0) {
			sub = out;
			n1 = n1-n2;
			out = new byte[n1];
			for (k=0; k<n1; k++) {
				out[k] = sub[k+n2];
			}
		}
		return out;
	}
	
	public boolean biggerEqual (byte[] in1, byte[]in2) {
		int n1, n2, k;
		byte[] temp = null;
		if (in1[0] == 0) {
			n2 = 0;
			n1 = in1.length;
			for (n2=0; n2<n1-1; n2++) {
				if (in1[n2] != 0)
					break;
			}
			if (n2>0) {
				temp = in1;
				n1 = n1-n2;
				in1 = new byte[n1];
				for (k=0; k<n1; k++) {
					in1[k] = temp[k+n2];
				}
			}
		}
		if (in2[0] == 0) {
			n2 = 0;
			n1 = in2.length;
			for (n2=0; n2<n1-1; n2++) {
				if (in2[n2] != 0)
					break;
			}
			if (n2>0) {
				temp = in2;
				n1 = n1-n2;
				in2 = new byte[n1];
				for (k=0; k<n1; k++) {
					in2[k] = temp[k+n2];
				}
			}
		}
		if (in1.length > in2.length)
			return true;
		else if (in1.length < in2.length)
			return false;
		n1 = in1.length;
		for (k=0; k<n1; k++) {
			if ((in1[k]&0xFF)<(in2[k]&0xFF))
				return false;
			else if ((in1[k]&0xFF)>(in2[k]&0xFF))
				return true;
		}
		return true;
	}
	
	public byte[] multiply (byte[] in1, byte[] in2) {
		byte[] out = null;
		byte[] mul = null;
		int n, n1, n2, k1, k2, temp, carry;
		if (in1[0] == 0) {
			n2 = 0;
			n1 = in1.length;
			for (n2=0; n2<n1-1; n2++) {
				if (in1[n2] != 0)
					break;
			}
			if (n2>0) {
				out = in1;
				n1 = n1-n2;
				in1 = new byte[n1];
				for (k1=0; k1<n1; k1++) {
					in1[k1] = out[k1+n2];
				}
			}
		}
		if (in2[0] == 0) {
			n2 = 0;
			n1 = in2.length;
			for (n2=0; n2<n1-1; n2++) {
				if (in2[n2] != 0)
					break;
			}
			if (n2>0) {
				out = in2;
				n1 = n1-n2;
				in2 = new byte[n1];
				for (k1=0; k1<n1; k1++) {
					in2[k1] = out[k1+n2];
				}
			}
		}
		n1 = in1.length;
		n2 = in2.length;
		n = n1 + n2;
		mul = new byte[n];
		for (k1=0; k1<n; k1++) {
			mul[k1] = 0;
		}
		carry = 0;
		for (k1=n1-1; k1>=0; k1--) {
			for (k2=n2-1; k2>=0; k2--) {
				temp = (in1[k1] & 0xFF) * (in2[k2] & 0xFF) + carry + (mul[k1+k2+1] & 0xFF);
				mul[k1+k2+1] = (byte)(temp & 0xFF);
				carry = temp >> 8;
			}
			for (; carry>0;) {
				temp = carry + (mul[k1+k2+1] & 0xFF);
				mul[k1+k2+1] = (byte)(temp & 0xFF);
				carry = temp >> 8;
				k2--;
			}
		}
		if (mul[0] == 0) {
			out = new byte[n-1];
			for (k1=n-2; k1>=0; k1--)
				out[k1] = mul[k1+1];
		}
		else
			out = mul;
		return out;
	}
	
	// = (a mod m)
	public byte[] mod (byte[] a, byte[] m) {
		byte[] out = null;
		byte[] temp = null;
		int n1, n2, k, temp2;
		if (a[0] == 0) {
			n2 = 0;
			n1 = a.length;
			for (n2=0; n2<n1-1; n2++) {
				if (a[n2] != 0)
					break;
			}
			if (n2>0) {
				out = a;
				n1 = n1-n2;
				a = new byte[n1];
				for (k=0; k<n1; k++) {
					a[k] = out[k+n2];
				}
			}
		}
		if (m[0] == 0) {
			n2 = 0;
			n1 = m.length;
			for (n2=0; n2<n1-1; n2++) {
				if (m[n2] != 0)
					break;
			}
			if (n2>0) {
				out = m;
				n1 = n1-n2;
				m = new byte[n1];
				for (k=0; k<n1; k++) {
					m[k] = out[k+n2];
				}
			}
		}
		while (this.biggerEqual(a, m)) {
			temp2 = (a[0] & 0xFF) - (m[0] & 0xFF);
			if (temp2 <= 0) {
				if (a.length > m.length) {
					n1 = a.length - m.length;
					temp2 = ((a[0] & 0xFF)*0x100 + (a[1] & 0xFF)) / ((m[0] & 0xFF)+1);
					temp = new byte[n1];
					for (k=1; k<n1; k++)
						temp[k] = 0;
					temp[0] = (byte) (temp2 & 0xFF);
				}
				else {
					temp = new byte[1];
					temp[0] = 1;
				}
			}
			else {
				temp2 = (a[0] & 0xFF) / ((m[0] & 0xFF)+1);
				n1 = a.length - m.length + 1;
				temp = new byte[n1];
				for (k=1; k<n1; k++)
					temp[k] = 0;
				temp[0] = (byte) temp2;
			}
			//System.out.println("a:"+this.byte2hex(a)+" temp:"+this.byte2hex(temp)+" m:"+this.byte2hex(m));
			a = this.subtract(a, this.multiply(temp, m));
		}
		out = a;
		return out;
	}
	
	// = a exp e mod m
	public byte[] exp (byte[] a, byte[] e, byte[] m) {
		byte[] out = null;
		byte[] temp = null;
		int n1, n2, k;
		if (a[0] == 0) {
			n2 = 0;
			n1 = a.length;
			for (n2=0; n2<n1-1; n2++) {
				if (a[n2] != 0)
					break;
			}
			if (n2>0) {
				out = a;
				n1 = n1-n2;
				a = new byte[n1];
				for (k=0; k<n1; k++) {
					a[k] = out[k+n2];
				}
			}
		}
		if (e[0] == 0) {
			n2 = 0;
			n1 = e.length;
			for (n2=0; n2<n1-1; n2++) {
				if (e[n2] != 0)
					break;
			}
			if (n2>0) {
				out = e;
				n1 = n1-n2;
				e = new byte[n1];
				for (k=0; k<n1; k++) {
					e[k] = out[k+n2];
				}
			}
		}
		if (m[0] == 0) {
			n2 = 0;
			n1 = m.length;
			for (n2=0; n2<n1-1; n2++) {
				if (m[n2] != 0)
					break;
			}
			if (n2>0) {
				out = m;
				n1 = n1-n2;
				m = new byte[n1];
				for (k=0; k<n1; k++) {
					m[k] = out[k+n2];
				}
			}
		}
		a = this.mod(a, m);
		out = new byte[1];
		out[0] = 1;
		byte[] one = new byte[8];
		for (k=0; k<8; k++) {
			one[k] = (byte)(0x1 << (7-k));
		}
		temp = a;
		for (n1=e.length - 1; n1>=0; n1--) {
			for (n2=7; n2>=0; n2--) {
				if ((e[n1] & one[n2]) != 0) {
					out = this.multiply(temp, out);
					out = this.mod(out, m);
				}
				temp = this.multiply(temp, temp);
				temp = this.mod(temp, m);
			}
		}
		return out;
	}
	
	private byte[] hex2byte(String strhex) {
		if (strhex == null) {
			return null;
		}
		int l = strhex.length();
		if (l % 2 == 1) {
			return null;
		}
		byte[] b = new byte[l / 2];
		for (int i = 0; i < (l / 2); i++) {
			b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2), 16);
		}
		return b;
	}
	
	private String byte2hex(byte[] b) {
		String hs = "";
		String stmp = "";
		for (int n = 0; n < b.length; n++) {
			stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
			if (stmp.length() == 1) {
				hs =  hs + "0" + stmp;
			} else {
				hs = hs + stmp;
			}
		}
		return hs.toUpperCase();
	}
	
	public void setN (byte[] N) {
		this.N_num = N;
		return;
	}
	public byte[] getN () {
		return this.N_num;
	}
	
	public void setE (byte[] E) {
		this.E_num = E;
		return;
	}
	public byte[] getE () {
		return this.E_num;
	}
	
	public void setD (byte[] D) {
		this.D_num = D;
		return;
	}
	public byte[] getD () {
		return this.D_num;
	}
	
	public static void main(String[] args) {
		RsaEncrypt rsa = new RsaEncrypt();
		rsa.setN(rsa.hex2byte("A97436BDB83C2AB67350371CFF9CAB6B892E0A5AA5F1FEFAA9BCC04AD0EF136CB7FE296336C4D84BFFE70F9BBFA036EA8D126C9F46BD6E09EDDC065770DDCB57E494DEB53F2CB435AF3C0C68F419522CDDED758D1C2B1C8371D869194CDCFA28937EF5EA9775E29B8DA6265D31DB21D1C0773CBA62A2BD780E57C418A8AAEF27"));
		rsa.setE(rsa.hex2byte("010001"));
		rsa.setD(rsa.hex2byte("27DECC327F72C8A9FD1FD697E01CC0C8A09250A55B7E40FC418BC3C2D6BE29D7DEC2D2822194D73FAA8A7745B224C44713C24E047BE47E4B9FC7B14649AC25F7B8D91B1CC5BA3366A89F9807F0BB4EF951C59DCCA48DD994EB33B40B3D243C0310BFD53C039E2350725F9B3FCD0CD183C133B33C4FD0999677FE087F17ADA541"));
		byte[] mess = rsa.hex2byte("0102030405060708090A0B0C0D0E0F");//原文必須是一個十六進制數
		byte[] enc = null;
		byte[] dec = null;
		enc = rsa.encrypt(mess);
		enc = rsa.encrypt(mess);
		dec = rsa.decrypt(enc);
		System.out.println("原文:"+rsa.byte2hex(mess));
		System.out.println("密文:"+rsa.byte2hex(enc));
		System.out.println("解密:"+rsa.byte2hex(dec));
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲啪啪综合av一区二区三区| 国产一区二区调教| 一道本成人在线| 欧美国产综合色视频| 国产一区二区三区四区五区美女| 在线欧美一区二区| 亚洲免费色视频| 在线免费观看日本一区| 一区二区在线观看av| 色婷婷久久一区二区三区麻豆| 亚洲三级在线免费观看| 成人av电影在线网| 国产精品久久久久久亚洲伦 | 亚洲人成网站在线| 99久久精品费精品国产一区二区| 亚洲欧美在线视频| 91丝袜美腿高跟国产极品老师 | 91网站在线观看视频| 久久九九久久九九| 成人永久aaa| 亚洲免费在线电影| 91官网在线免费观看| 亚洲成人免费av| 欧美一级在线视频| 国产一区二区在线看| 91麻豆精品国产91久久久久久| 日韩福利视频导航| 26uuu国产在线精品一区二区| 国产精品乡下勾搭老头1| 国产女主播一区| 91久久精品一区二区三| 五月激情综合色| 欧美成人精品3d动漫h| 国产精品亚洲人在线观看| 国产精品久久久久久久久图文区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 久草在线在线精品观看| 国产拍欧美日韩视频二区| 成人午夜av影视| 亚洲一二三区视频在线观看| 日韩一区国产二区欧美三区| 国产成人高清在线| 一区二区三区成人| 精品精品国产高清a毛片牛牛 | 国产精品久久久久婷婷二区次| 色综合久久中文综合久久97| 日韩精品欧美精品| 国产欧美一区二区三区在线看蜜臀 | 亚洲影院免费观看| 欧美精品一区男女天堂| 91在线播放网址| 五月综合激情婷婷六月色窝| 精品国产一区a| 欧美在线一区二区| 国产在线精品一区二区不卡了| 亚洲欧美日韩精品久久久久| 欧美xfplay| 一本一本大道香蕉久在线精品| 麻豆国产精品一区二区三区| 综合欧美亚洲日本| 精品对白一区国产伦| 欧日韩精品视频| 成人免费毛片aaaaa**| 老司机精品视频线观看86 | 国产二区国产一区在线观看| 亚洲午夜精品一区二区三区他趣| 亚洲国产日韩一级| 国产精品乱人伦中文| 欧美成va人片在线观看| 欧美亚洲一区二区在线| 精品综合免费视频观看| 性久久久久久久久| 亚洲欧美韩国综合色| 久久精品亚洲一区二区三区浴池| 欧美日韩激情一区二区三区| caoporn国产一区二区| 美女一区二区在线观看| 亚洲精品国产无套在线观| 久久午夜老司机| 91精品国产欧美日韩| 91国偷自产一区二区三区成为亚洲经典| 久久不见久久见免费视频1| 亚洲五月六月丁香激情| 亚洲日本免费电影| 久久精品视频在线免费观看| 精品久久国产老人久久综合| 欧美一级午夜免费电影| 精品视频在线视频| 日本道色综合久久| 欧洲一区二区三区在线| 精品一区二区三区在线观看国产| 日本少妇一区二区| 午夜免费欧美电影| 日韩精品久久理论片| 亚洲国产视频a| 亚洲国产日韩一区二区| 一区二区成人在线| 一区二区三区在线播| 亚洲欧美一区二区三区久本道91| 亚洲欧美一区二区三区极速播放 | 亚洲人成人一区二区在线观看 | 久久精品无码一区二区三区| 久久先锋影音av鲁色资源| 欧美一级一级性生活免费录像| 欧美精品国产精品| 欧美丰满美乳xxx高潮www| 欧美人牲a欧美精品| 中文字幕一区二区日韩精品绯色| 国产精品久久免费看| 亚洲欧美日本韩国| 国产精品入口麻豆原神| 一区二区三区在线观看网站| 偷拍与自拍一区| 国产乱妇无码大片在线观看| 91玉足脚交白嫩脚丫在线播放| 欧美喷水一区二区| 欧美高清在线精品一区| 亚洲一卡二卡三卡四卡无卡久久| 麻豆成人久久精品二区三区红 | 国产福利一区二区三区| 色悠久久久久综合欧美99| 日韩欧美一区电影| 综合久久给合久久狠狠狠97色| 三级成人在线视频| 成人高清视频在线观看| 91麻豆精品国产91久久久| 国产亚洲福利社区一区| 亚洲va韩国va欧美va| 国产成人亚洲综合a∨婷婷| 欧美写真视频网站| 国产婷婷色一区二区三区四区| 亚洲一二三区在线观看| 国产91精品精华液一区二区三区| 欧美欧美午夜aⅴ在线观看| 中文在线免费一区三区高中清不卡| 天天操天天色综合| 91在线精品一区二区| 精品国产露脸精彩对白| 亚洲国产wwwccc36天堂| 成人午夜免费av| 日韩三级电影网址| 亚洲五码中文字幕| 91麻豆国产福利精品| 久久久久久久久久美女| 日日夜夜精品视频天天综合网| 97精品超碰一区二区三区| 久久久久久久久久久电影| 日韩高清欧美激情| 欧美色图一区二区三区| 中文字幕一区在线| 国产成人精品一区二区三区网站观看| 亚洲一区二区四区蜜桃| 国产91丝袜在线18| 久久久亚洲高清| 激情深爱一区二区| 欧美一区二区三级| 午夜精品成人在线视频| 在线观看欧美黄色| 亚洲人成网站精品片在线观看| 播五月开心婷婷综合| 国产欧美日本一区视频| 国内成+人亚洲+欧美+综合在线| 日韩一区二区中文字幕| 日韩影视精彩在线| 欧美高清性hdvideosex| 无码av免费一区二区三区试看| 欧美日韩一级二级三级| 亚洲小少妇裸体bbw| 欧美性猛片aaaaaaa做受| 一区二区三区在线观看动漫| 91农村精品一区二区在线| 国产精品蜜臀av| 99久久精品国产精品久久 | 亚洲三级久久久| 99re66热这里只有精品3直播| 成人欧美一区二区三区| 97久久超碰国产精品电影| 亚洲欧美综合网| 欧美在线制服丝袜| 午夜精彩视频在线观看不卡| 欧美肥胖老妇做爰| 日韩电影在线观看网站| 日韩一级高清毛片| 国产精品一区二区三区99| 国产欧美日韩在线看| 91视频在线观看| 婷婷综合久久一区二区三区| 91精品国产日韩91久久久久久| 美洲天堂一区二卡三卡四卡视频 | 国产视频一区在线观看| 成人av网站免费观看| 亚洲蜜臀av乱码久久精品| 欧美少妇bbb| 精品一区二区三区免费观看| 欧美激情综合五月色丁香 | 午夜精品久久久久影视| 欧美成人猛片aaaaaaa| 成人综合婷婷国产精品久久| 伊人婷婷欧美激情| 日韩欧美黄色影院|