资源简介
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源码
相关资源
- linux C实现MD5withRSA签名
- SM4java实现
- DES加密算法及其在Java中的实现
- AES加密解决了windows下正常,linux报错
- Java实现的AES/CBC/NoPadding方式实现的文
- java des算法实现加密文字以及图片
- 用java编程语言RC4算法的加密和解密
- Java Cipher
- java实现RSA算法的大整数编程----实现对
- 可搜索加密
- Delphi7AES加密解密与JAVA互转默认128位
- JAVA给doc文档加密加水印
- Java加密与解密的艺术.rar 完整源代码
- RSA与AES混合加密算法的实现java版
- 北京联通全网有关网上订购和点播接
- 加密安全的java即时通信系统
- codec-1.10.jar
- JAVA加密MD5源代码
- Java AES文件和文本加解密
- 真正国密SM2SM3SM4的前后台配套js和ja
- Unity代码混淆加密插件 Obfuscator v2.0.
- android 中图片资源的加密
- java、android、web三端通用的RSA和AES工具
- 加密解密字符串工具含源码,可双击
- Hill加密算法Java实现,带图形化界面
- MAVEN RSA签名生成验签
- MD5加密的jar包.zip
- Q学习sarsa学习代码包
- java课程设计加密解密
- java网上聊天加密系统源代码
评论
共有 条评论