资源简介
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源码
相关资源
- Java 文件加密传输
- 基于java的类PGP文件加密传输系统
- Crypto++ 7.0.0 for Android 已编译
- C#和Java实现互通的RSADES加解密算法
- 文件加密工具带jar包
- 黑马28期Android全套视频无加密无水印
- Delphi开发Android程序调用wxSqlite3编译的
- JS实现AES-GCM加密,java实现AES-GCM解密。
- java国密算法SM4加密.zip
- Delphi 版 SM3 SM4 加密实现代码
- 4位明文SHA_256加密破解。JAVA语言
- 金蝶K3用户名密码加密过程(java)
- DES加密解密算法论文
- RSA数字签名算法的具体实现
- BAT大厂APP架构演进实践与优化之路
- Rsa非对称加密的Java实现和举例更新版
- java class加密保护(完全免费) v2.1
- 完美使用RSA2结合AES对数据进行加密兼
- Android RSA加密jar包
- RSA算法JAVA公钥加密,C#私钥解密
- 支付宝RSA加解密工具
- aes加密算法 五种模式
- 论文研究 - 使用混合密码算法的端到
- des加密算法实现任意文件加解密
- 属性基加密java实现.zip
- java文件加密和解密
- RSA加密登录示例278136
- Android RSA加密解密文件
- RSA加密传输AES的key和iv js加密 java解
- android MQTT 带SSL加密连接demo
评论
共有 条评论