接下来是客户端类CoderClient的编写。
1.首先配置如下信息,包括服务器地址、端口、密钥文件位置.
conf.properties
- #configure private key on server
- rsa_private=d:/rsa1_private.key
-
#public key from client
- rsa_public=d:/rsa_public.key
- #server
-
server=127.0.0.1
- #server port
-
port=888
2.编写发送文件的方法,其中byte[] buf=new byte[117]的原因是RSA加密算法支持的最大字节数为117,而加密后变成128位,所以服务器端解密的时候可以使用128bytes的buf读取文件。
- public boolean send(String filename){
-
try {
-
File f = new File(filename);
-
fis = new FileInputStream(filename);
-
byte[] buf = new byte[117];
-
int available;
-
socket = new Socket(server,port);
- os = socket.getOutputStream();
-
DataOutputStream dos = new DataOutputStream(os);
-
dos.writeUTF(f.getName());
-
dos.writeLong(f.length());
-
while((available = fis.read(buf)) != -1){
-
byte[] availableBytes = null;
-
if(available == buf.length){
- availableBytes = buf;
-
}else{
-
availableBytes = new byte[available];
-
for (int i = 0; i < available; i++) {
-
availableBytes[i] = (byte) buf[i];
- }
- }
-
byte[] cipherText = coder.encrypt(availableBytes);
-
byte[] signature = sign.getSignature(cipherText);
- os.write(signature);
- os.write(cipherText);
-
-
- }
- socket.shutdownOutput();
- fis.close();
-
return true;
-
} catch (FileNotFoundException e) {
-
log.error("文件"+filename+" 未找到");
-
} catch (UnknownHostException e) {
-
log.error("未知主机:"+server);
-
} catch (IOException e) {
-
log.error("文件读/写错误,可能是因为远程主机无响应");
- }
-
return false;
- }
3.为了测试多线程处理效果,可以将客户端继承于Thread,在重写的run方法中调用 send(String file)方法
- @Override
-
public void run() {
-
send(this.file);
- }
4.main中的测试可以这样来模拟多个客户端同时向服务器传输文件
- File dir = new File("E://files//demo//");
- File[] files = dir.listFiles();
-
-
for(int i=0; i<files.length; i++){
-
Thread th = new Thread(new CoderClient(files[i].getAbsolutePath()));
- th.start();
- }
分享到:
相关推荐
RSA加密演算法是一种非对称加密演算法。在公开密钥加密和电子商业中RSA被广泛使用。 典型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序直接用RSA+AES加密通信 ...
RSA加密演算法是一种非对称加密演算法。在公开密钥加密和电子商业中RSA被广泛使用。这是演示程序,不包含控件 型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序...
这是我用C#编写的基于Socket网络编程技术,在网络上传输加密文件,并对其进行数字签名,在另一端进行解密,并验证签名的一个WinForm程序,里面涉及到的加密解密算法有对称密码算法DES和非对称密码算法RSA加密解密...
综合来看,这个系统利用RSA加密保障文件的安全性,结合TCP和UDP满足不同场景的传输需求,是实现安全文件传输的一个典型示例。开发者需要对Java网络编程、加密算法以及数据传输协议有深入理解,才能有效地构建和维护...
综上所述,"java模仿QQ通信实现RSA加密解密"项目涵盖了网络通信的基础(Socket编程),以及安全性相关的高级概念(RSA加密解密、消息摘要、数字签名)。通过这样的实践,开发者可以更好地理解和掌握网络编程和信息...
本主题涉及的关键技术包括RSA加密算法、数字证书、以及Socket编程,这些都是网络安全通信的基础。 首先,RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。它的特点...
在SSL Socket加密传输中,OpenSSL的作用是生成必要的密钥材料和证书,以确保数据的机密性和完整性。 1. **生成私钥**: 使用OpenSSL生成RSA私钥,通常使用`genpkey`命令。例如,以下命令将创建一个2048位的RSA私钥...
VC++ 毕业论文:RSA文件加密原理及代码实现 RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer...
1. **EncripClient.java** - 这可能是客户端的加密Socket实现。客户端在发送数据前先加密,然后通过Socket连接将加密后的数据发送到服务器。 2. **EncripServer.java** - 对应的是服务器端的处理逻辑,它接收客户端...
总的来说,基于Java的类PGP文件加密传输系统利用了Java的安全特性,如加密库和数字签名,实现了类似PGP的文件加密、签名和传输功能,确保了数据在传输过程中的隐私和完整性。通过这样的系统,用户可以更安心地进行...
本文主要介绍了一种基于RSA和MD5算法的文件传输签名与验证系统,利用Java语言和Winsock通信协议实现。以下将详细阐述这个系统的设计原理和关键组成部分。 首先,数字签名的核心是RSA算法,这是一种非对称加密算法,...
例如,`openssl enc`命令可用于对文件进行加密,`openssl rsautl`可用于处理RSA加密和解密。同时,`openssl pkeyutl`也可以用于非对称加密操作。具体的命令格式和参数需要根据实际情况调整。 6. **SSLClient**: ...
通过这种方式,"Socket_Tcp.zip"中的程序展示了如何利用C++、TCP Socket、RSA加密和MD5摘要来实现安全的文件传输,这对于任何需要进行安全数据交换的系统都具有很高的参考价值。这样的实现不仅保证了文件内容的安全...
在RSA加密的基础上,SOCKET可以实现安全的数据传输。 在项目中,"SecureIM.doc"可能是设计文档,详细描述了软件的设计思路、架构和实现方法,包括RSA算法的实现、MFC框架的应用以及SOCKET编程的细节。而"SecureIM...
- **加密算法**:文中虽然未明确指出具体的加密算法,但考虑到系统需要支持文件的加密传输,可以推测可能采用了AES、RSA等加密算法。这些算法既可以保证数据的安全性,又能够满足文件传输的需求。 - **数字签名**:...
1. **RSA加密与解密**:RSA的加解密过程基于大数因子分解的困难性。加密时,用户使用接收者的公钥对明文进行加密;解密时,接收者使用自己的私钥对密文进行解密。这种机制确保了即使公钥被截获,也无法轻易解密信息...
在现代网络安全环境中,确保数据在传输过程中的安全性至关重要,SSL(Secure Socket Layer)或其更新版本TLS(Transport Layer Security)正是实现这一目标的关键技术。SSL/TLS可以提供端到端的数据加密,防止中间人...
Java 提供了相关的 API 来实现 RSA 加密和数字签名,例如 Java Cryptography Architecture (JCA) 和 Java Secure Socket Extension (JSSE)。 在 Java 中,RSA 加密可以使用 java.security.KeyPairGenerator 生成...
加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的...
8. 法规遵从性:在医疗、金融等领域,使用RSA加密符合相关法规对数据安全的要求,如HIPAA(Health Insurance Portability and Accountability Act)和PCI DSS(Payment Card Industry Data Security Standard)等。...