資源簡介
AB雙方通信,A把需要傳輸的文件MD5值用自己的私鑰生成數字簽名,連同明文用B的公鑰加密后傳送給B,B用私鑰解密驗證數字簽名,并計算明文MD5值跟密文的MD5值比較
代碼片段和文件信息
package?net;
import?java.io.BufferedInputStream;
import?java.io.BufferedReader;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.io.objectInputStream;
import?java.io.OutputStream;
import?java.net.ServerSocket;
import?java.net.Socket;
import?java.security.interfaces.RSAPublicKey;
import?util.KeyUtils;
import?util.MD5Utils;
import?util.RSAUtils;
import?util.SignUtils;
public?class?A?{
private?String?info;
private?String?FILE?=?“d:/test/test.txt“;
private?String?KEY_FILE?=?“d:/test/A/AKey.dat“;
private?String?SIGN_FILE?=?“d:/test/A/sign.dat“;
private?String?RSA_SIGN_FILE?=?“d:/test/A/rsaSign.dat“;
private?String?RSA_FILE?=?“d:/test/A/rsaTest.dat“;
private?RSAPublicKey?pubKey;
public?RSAPublicKey?getPubKey()?{
return?pubKey;
}
public?void?setPubKey(RSAPublicKey?pubKey)?{
this.pubKey?=?pubKey;
}
public?String?getInfo()?{
return?info;
}
public?void?setInfo(String?info)?{
this.info?=?info;
}
public?void?init()?{
//?創建目錄
File?f1?=?new?File(“d:/test/A/“);
f1.mkdirs();
info?=?MD5Utils.md5(FILE);
KeyUtils.createPairKey(KEY_FILE);
SignUtils.signInfo(KEY_FILE?info?SIGN_FILE);
}
public?void?send()?throws?Exception?{
RSAUtils.encryptToFile(pubKey?SIGN_FILE?RSA_SIGN_FILE);
RSAUtils.encryptToFile(pubKey?FILE?RSA_FILE);
}
public?void?start()?throws?Exception?{
ServerSocket?ss?=?new?ServerSocket(520);
Socket?socket?=?ss.accept();
InputStream?is?=?socket.getInputStream();
DataInputStream?dis?=?new?DataInputStream(is);
BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(System.in));
OutputStream?os?=?socket.getOutputStream();
DataOutputStream?dos?=?new?DataOutputStream(os);
objectInputStream?ois?=?new?objectInputStream(is);
String?str1?=?br.readLine();
dos.writeUTF(str1);
dos.flush();
String?str2?=?br.readLine();
dos.writeUTF(str2);
dos.flush();
String?str3?=?dis.readUTF();
System.out.println(“【A】A接受到B的輸入:“?+?str3);
if?(“y“.equalsIgnoreCase(str3))?{
System.out.println(“【A】AB通話開始......“);
System.out.println(“【A】A接收B的公鑰開始......“);
setPubKey((RSAPublicKey)?ois.readobject());
System.out.println(“【A】A接收B的公鑰完畢......“);
send();
System.out.println(“【A】A開始發送由B公鑰加密過的密文......“);
File?file?=?new?File(RSA_SIGN_FILE);
long?length=?file.length();
dos.writeLong(length);
BufferedInputStream?bis?=?new?BufferedInputStream(
new?FileInputStream(RSA_SIGN_FILE));
int?a;
while?((a?=?bis.read())?!=?-1)?{
dos.write(a);
}
bis.close();
BufferedInputStream?bis2?=?new?BufferedInputStream(
new?FileInputStream(RSA_FILE));
int?b;
while?((b?=?bis2.read())?!=?-1)?{
dos.write(b);
}
bis2.close();
System.out.println(“【A】A發送密文文件完畢......“);
System.out.println(“【A】AB通話結束...
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????292??2010-11-29?08:59??MySec\.classpath
?????文件????????381??2010-11-29?08:57??MySec\.project
?????文件???????1867??2010-11-29?08:57??MySec\src\util\FileUtils.java
?????文件???????1096??2010-11-29?09:41??MySec\src\util\KeyUtils.java
?????文件????????922??2010-11-29?09:41??MySec\src\util\MD5Utils.java
?????文件???????3454??2010-11-29?09:42??MySec\src\util\RSAUtils.java
?????文件???????2332??2010-11-29?08:57??MySec\src\util\SignUtils.java
?????文件???????1117??2010-11-29?09:40??MySec\src\test\SecTest.java
?????文件???????3254??2010-11-29?09:55??MySec\src\net\A.java
?????文件???????3651??2010-11-29?10:00??MySec\src\net\B.java
?????文件?????953845??2010-11-29?08:58??MySec\lib\jce-jdk13-120.jar
?????文件???????1831??2010-11-29?08:59??MySec\bin\util\FileUtils.class
?????文件???????1336??2010-11-29?09:41??MySec\bin\util\KeyUtils.class
?????文件???????1483??2010-11-29?09:41??MySec\bin\util\MD5Utils.class
?????文件???????2917??2010-11-29?09:42??MySec\bin\util\RSAUtils.class
?????文件???????1658??2010-11-29?08:59??MySec\bin\util\SignUtils.class
?????文件???????1197??2010-11-29?09:40??MySec\bin\test\SecTest.class
?????文件???????4672??2010-11-29?09:55??MySec\bin\net\A.class
?????文件???????4865??2010-11-29?10:00??MySec\bin\net\B.class
?????目錄??????????0??2010-12-10?10:41??MySec\src\util
?????目錄??????????0??2010-12-10?10:41??MySec\src\test
?????目錄??????????0??2010-12-10?10:41??MySec\src\net
?????目錄??????????0??2010-12-10?10:41??MySec\bin\util
?????目錄??????????0??2010-12-10?10:41??MySec\bin\test
?????目錄??????????0??2010-12-10?10:41??MySec\bin\net
?????目錄??????????0??2010-12-10?10:41??MySec\src
?????目錄??????????0??2010-12-10?10:41??MySec\lib
?????目錄??????????0??2010-12-10?10:41??MySec\bin
?????目錄??????????0??2010-12-10?10:41??MySec
-----------?---------??----------?-----??----
............此處省略2個文件信息
- 上一篇:FTPSUploadUtils 上傳工具
- 下一篇:京東蘇寧爬蟲java源碼
評論
共有 條評論