`
dyyaries
  • 浏览: 79951 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

RSA加密Socket传输文件、签名(三)

    博客分类:
  • Java
阅读更多

接下来是客户端类CoderClient的编写。

1.首先配置如下信息,包括服务器地址、端口、密钥文件位置.

conf.properties

 

  1. #configure private key on server  
  2. rsa_private=d:/rsa1_private.key  
  3. #public key from client  
  4. rsa_public=d:/rsa_public.key  
  5. #server  
  6. server=127.0.0.1  
  7. #server port  
  8. port=888  

 

 

 

2.编写发送文件的方法,其中byte[] buf=new byte[117]的原因是RSA加密算法支持的最大字节数为117,而加密后变成128位,所以服务器端解密的时候可以使用128bytes的buf读取文件。

 

  1. public boolean send(String filename){  
  2.         try {  
  3.             File f = new File(filename);  
  4.             fis = new FileInputStream(filename);  
  5.             byte[] buf = new byte[117];  
  6.             int available;  
  7.             socket = new Socket(server,port);  
  8.             os = socket.getOutputStream();  
  9.             DataOutputStream dos = new DataOutputStream(os);  
  10.             dos.writeUTF(f.getName()); //写入文件名   
  11.             dos.writeLong(f.length()); //写入文件大小   
  12.             while((available = fis.read(buf)) != -1){  
  13.                 byte[] availableBytes = null;  
  14.                 if(available == buf.length){  
  15.                     availableBytes = buf;  
  16.                 }else{  
  17.                     availableBytes = new byte[available];  
  18.                     for (int i = 0; i < available; i++) {  
  19.                         availableBytes[i] = (byte) buf[i];  
  20.                     }  
  21.                 }  
  22.                 byte[] cipherText = coder.encrypt(availableBytes);  
  23.                 byte[] signature = sign.getSignature(cipherText);  
  24.                 os.write(signature);  
  25.                 os.write(cipherText);  
  26.                 //count += cipherText.length;   
  27.                 //System.out.println("send "+count+" bytes");   
  28.             }  
  29.             socket.shutdownOutput();  
  30.             fis.close();  
  31.             return true;  
  32.         } catch (FileNotFoundException e) {  
  33.             log.error("文件"+filename+" 未找到");  
  34.         } catch (UnknownHostException e) {  
  35.             log.error("未知主机:"+server);  
  36.         } catch (IOException e) {  
  37.             log.error("文件读/写错误,可能是因为远程主机无响应");  
  38.         }  
  39.         return false;  
  40.     }  

 

 

 

 

3.为了测试多线程处理效果,可以将客户端继承于Thread,在重写的run方法中调用 send(String file)方法

 

  1. @Override  
  2.     public void run() {  
  3.         send(this.file);  
  4.     }  

 

 

 

4.main中的测试可以这样来模拟多个客户端同时向服务器传输文件

 

  1. File dir = new File("E://files//demo//");  
  2.         File[] files = dir.listFiles();  
  3.           
  4.         for(int i=0; i<files.length; i++){  
  5.             Thread th = new Thread(new CoderClient(files[i].getAbsolutePath()));  
  6.             th.start();  
  7.         }  
分享到:
评论

相关推荐

    Delphi RSA 加密解密签名验签控件 RSA_Component(1.0.0.0).rar

    RSA加密演算法是一种非对称加密演算法。在公开密钥加密和电子商业中RSA被广泛使用。 典型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序直接用RSA+AES加密通信 ...

    C# Socket传输加密文件并解密(WinForm版)

    这是我用C#编写的基于Socket网络编程技术,在网络上传输加密文件,并对其进行数字签名,在另一端进行解密,并验证签名的一个WinForm程序,里面涉及到的加密解密算法有对称密码算法DES和非对称密码算法RSA加密解密...

    Delphi 开发的 RSA 加密解密签名验签控件演示程序 RSA_Component_Demo(1.0.0.0).rar

    RSA加密演算法是一种非对称加密演算法。在公开密钥加密和电子商业中RSA被广泛使用。这是演示程序,不包含控件 型的应用 1. 苹果App签名, iOS App 签名的原理; 2. 支付宝签名验证 ; 2. HTTPS 加密连接; 3. 程序...

    RSA文件加密传送

    综合来看,这个系统利用RSA加密保障文件的安全性,结合TCP和UDP满足不同场景的传输需求,是实现安全文件传输的一个典型示例。开发者需要对Java网络编程、加密算法以及数据传输协议有深入理解,才能有效地构建和维护...

    java模仿QQ通信实现RSA加密解密

    综上所述,"java模仿QQ通信实现RSA加密解密"项目涵盖了网络通信的基础(Socket编程),以及安全性相关的高级概念(RSA加密解密、消息摘要、数字签名)。通过这样的实践,开发者可以更好地理解和掌握网络编程和信息...

    Java实现RSA加密解密,数字证书生成与验证(有搭Socket)

    本主题涉及的关键技术包括RSA加密算法、数字证书、以及Socket编程,这些都是网络安全通信的基础。 首先,RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。它的特点...

    ssl socket加密传输

    在SSL Socket加密传输中,OpenSSL的作用是生成必要的密钥材料和证书,以确保数据的机密性和完整性。 1. **生成私钥**: 使用OpenSSL生成RSA私钥,通常使用`genpkey`命令。例如,以下命令将创建一个2048位的RSA私钥...

    VC++ 毕业论文:RSA文件加密原理及代码实现

    VC++ 毕业论文:RSA文件加密原理及代码实现 RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer...

    socket 加密传送

    1. **EncripClient.java** - 这可能是客户端的加密Socket实现。客户端在发送数据前先加密,然后通过Socket连接将加密后的数据发送到服务器。 2. **EncripServer.java** - 对应的是服务器端的处理逻辑,它接收客户端...

    文件传输的签名与验证程序

    本文主要介绍了一种基于RSA和MD5算法的文件传输签名与验证系统,利用Java语言和Winsock通信协议实现。以下将详细阐述这个系统的设计原理和关键组成部分。 首先,数字签名的核心是RSA算法,这是一种非对称加密算法,...

    Openssl给文件传输加密

    例如,`openssl enc`命令可用于对文件进行加密,`openssl rsautl`可用于处理RSA加密和解密。同时,`openssl pkeyutl`也可以用于非对称加密操作。具体的命令格式和参数需要根据实际情况调整。 6. **SSLClient**: ...

    Socket_Tcp.zip

    通过这种方式,"Socket_Tcp.zip"中的程序展示了如何利用C++、TCP Socket、RSA加密和MD5摘要来实现安全的文件传输,这对于任何需要进行安全数据交换的系统都具有很高的参考价值。这样的实现不仅保证了文件内容的安全...

    基于java的类PGP文件加密传输系统

    总的来说,基于Java的类PGP文件加密传输系统利用了Java的安全特性,如加密库和数字签名,实现了类似PGP的文件加密、签名和传输功能,确保了数据在传输过程中的隐私和完整性。通过这样的系统,用户可以更安心地进行...

    带有RSA的MFC加密聊天软件

    在RSA加密的基础上,SOCKET可以实现安全的数据传输。 在项目中,"SecureIM.doc"可能是设计文档,详细描述了软件的设计思路、架构和实现方法,包括RSA算法的实现、MFC框架的应用以及SOCKET编程的细节。而"SecureIM...

    基于JAVA的文件加密传输系统的设计与实现.pdf

    - **加密算法**:文中虽然未明确指出具体的加密算法,但考虑到系统需要支持文件的加密传输,可以推测可能采用了AES、RSA等加密算法。这些算法既可以保证数据的安全性,又能够满足文件传输的需求。 - **数字签名**:...

    rsa算法实现系统

    1. **RSA加密与解密**:RSA的加解密过程基于大数因子分解的困难性。加密时,用户使用接收者的公钥对明文进行加密;解密时,接收者使用自己的私钥对密文进行解密。这种机制确保了即使公钥被截获,也无法轻易解密信息...

    mongodb开启SSL传输加密

    在现代网络安全环境中,确保数据在传输过程中的安全性至关重要,SSL(Secure Socket Layer)或其更新版本TLS(Transport Layer Security)正是实现这一目标的关键技术。SSL/TLS可以提供端到端的数据加密,防止中间人...

    RSA-TBOS数字签密方案分析及其Java实现技术.pdf

    Java 提供了相关的 API 来实现 RSA 加密和数字签名,例如 Java Cryptography Architecture (JCA) 和 Java Secure Socket Extension (JSSE)。 在 Java 中,RSA 加密可以使用 java.security.KeyPairGenerator 生成...

    VC++毕业论文:RSA文件加密原理及代码实现

    加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的...

    浅析RSA密码算法在物联网数据传输中的应用.pdf

    8. 法规遵从性:在医疗、金融等领域,使用RSA加密符合相关法规对数据安全的要求,如HIPAA(Health Insurance Portability and Accountability Act)和PCI DSS(Payment Card Industry Data Security Standard)等。...

Global site tag (gtag.js) - Google Analytics