`
thunderwap
  • 浏览: 9896 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

socket 加密传送

阅读更多

序列化对象,作为socket传送内容,为了确保安全,增加公匙:

package serialver.entity;

import java.io.Serializable;
import java.security.PublicKey;

/**
 *  @ version 创建时间:2014-3-21 下午04:46:42
 *
 *  @ author  leicl   
 *
 *  类说明:
 *
 */
public class EncriptEntity implements Serializable{
 /**
  * 根据对象结构自动生成的
  */
 private static final long serialVersionUID = 910786463864347205L;
 byte[] data;
 byte[] sign;
 PublicKey key;
 
 public EncriptEntity(byte[] data, byte[] sign, PublicKey key) {
  super();
  this.data = data;
  this.sign = sign;
  this.key = key;
 }

 public PublicKey getKey() {
  return key;
 }

 public byte[] getData() {
  return data;
 }

 public byte[] getSign() {
  return sign;
 }
 
 
}
加密工具类:

package serialver.util;

import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;

/**
 *  @ version 创建时间:2014-3-21 下午04:18:21
 *
 *  @ author  leicl   
 *
 *  类说明:
 *
 */
public class DataSign {
 
 public static KeyPair encryptionData() throws NoSuchAlgorithmException, InvalidKeyException{
  KeyPairGenerator gen = KeyPairGenerator.getInstance("DSA");
  gen.initialize(1024, new SecureRandom());
  KeyPair kayPair = gen.generateKeyPair();
  System.out.println("正在生成密匙......");
  
  return kayPair;
 }

}
客户端程序:

package serialver.client;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;

import serialver.entity.EncriptEntity;
import serialver.util.DataSign;

/**
 *  @ version 创建时间:2014-3-21 下午04:41:28
 *
 *  @ author  leicl   
 *
 *  类说明:
 *
 */
public class EncripClient {
 
 public static void main(String[] args) throws UnknownHostException, IOException, InvalidKeyException, NoSuchAlgorithmException, SignatureException {
  Socket s = new Socket(InetAddress.getLocalHost(), 2323);
  
  ObjectOutput os = new ObjectOutputStream(s.getOutputStream());
  
  FileInputStream fi = new FileInputStream("f:\\apllication.policy");
  byte[] b = new byte[fi.available()];
  fi.read(b);
  KeyPair kayPair = DataSign.encryptionData();
  Signature sign = Signature.getInstance("SHA/DSA");
  
  PrivateKey private1 = kayPair.getPrivate();
  PublicKey public1 = kayPair.getPublic();
  
  sign.initSign(private1);
  sign.update(b);
  
  EncriptEntity en = new EncriptEntity(b, sign.sign(), public1);
  os.writeObject(en);
 }

}
服务器端程序:

package serialver.entity;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Signature;
import java.security.SignatureException;

/**
 *  @ version 创建时间:2014-3-21 下午04:58:23
 *
 *  @ author  leicl   
 *
 *  类说明:
 *
 */
public class EncripServer {
 
 public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
  ServerSocket ser = new ServerSocket(2323);
  
  Socket accept = ser.accept();
  ObjectInput is = new ObjectInputStream(accept.getInputStream());
  
  EncriptEntity en =  (EncriptEntity) is.readObject();
  
  Signature sign = Signature.getInstance("SHA/DSA");
  
  sign.initVerify(en.getKey());
  sign.update(en.getData());
  
  boolean verify = sign.verify(en.getSign());
  if(verify){
   System.out.println("sign is valid....");//说明签名有效
  }else{
   System.out.println("sign is not valid....");//签名无效
  }
 }

}

0
0
分享到:
评论
1 楼 thunderwap 2014-03-21  
自己研究的成果,避免一些只是说是这样那样,但是实际上没多大作用。
一句话,还是要自己亲身实践。

相关推荐

    socket 文件传送代码

    在给定的"文件传送代码"压缩包中,可能包含了服务器端和客户端的Java代码示例,这些示例可以帮助初学者理解如何使用Socket进行文件传输。通过阅读和运行这些代码,你可以更深入地了解Socket编程的实际应用。 总的来...

    RSA文件加密传送

    RSA文件加密传送是一种在互联网上安全传输数据的方法,它结合了Java编程语言、TCP和UDP协议,以及RSA公钥加密算法。在这个系统中,RSA用于确保数据在传输过程中的安全性,而TCP和UDP则提供了网络通信的基础。 首先...

    Qt socket传送文件

    本篇文章将详细讲解如何利用Qt的socket功能进行文件传输,以"Qt socket传送文件"为主题,结合提供的标签"Qt socket",我们将探讨Qt中的网络编程及其在Windows CE(Wince)环境下运行的实现方法。 首先,Qt的网络...

    服务端,,客户端通过socket传送图像

    "服务端与客户端通过socket传送图像"这个主题聚焦于如何利用Socket编程技术在VC++环境下实现实时的图像数据传输。Socket是一种在不同计算机之间建立连接、交换数据的基础组件,它为应用程序提供了底层的网络通信接口...

    Android_Socket_客户端和服务器端,支持多张图片同时传送,自定义协议头

    本项目"Android_Socket_客户端和服务器端,支持多张图片同时传送,自定义协议头"着重解决了如何通过Socket实现在Android设备上进行图片的高效传输,并且通过自定义协议头来增强数据传输的安全性和可靠性。...

    windows下socket 实例(可以传输图片,压缩包等较大文件)

    11. **安全性**:在实际应用中,应考虑数据加密和安全传输,如使用SSL/TLS协议保护数据不被窃取或篡改。 通过以上知识点,我们可以构建一个能够在Windows下传输大文件的Socket程序。然而,为了提高性能和可靠性,...

    socket文件传送

    5. **安全性**:对于敏感文件,可能需要使用SSL/TLS等加密协议进行安全传输,防止数据被窃取或篡改。 6. **流控制和拥塞控制**:TCP协议本身提供了流控制和拥塞控制机制,但实际应用中可能需要根据网络状况进行适当...

    使用socket在andorid中相互传送文件

    - **安全性**:考虑使用SSL/TLS加密传输,保护文件内容不被窃取。 6. **示例代码** 这里给出一个简单的文件传输概念代码: ```java // 客户端 FileInputStream fis = new FileInputStream(file); ...

    android客户端用socket不间断传输图片

    利用DataOutputStream和DataInputStream实现由android客户端利用Socket向java服务器不间断传输图片,很好用。之间试过由OutpuStream.write(byte[])以及先将图片byte[]通过Base64加密转换为String再发送,效果都不好...

    UDP协议实现对等通讯Java+RSA加密解密传送信息实现

    在Java编程中,我们可以通过java.net.Socket和java.net.DatagramSocket类来实现UDP协议的通信。这个项目是关于使用UDP协议进行对等通讯,并结合RSA加密算法来保证数据的安全性。以下将详细介绍该实现的关键知识点: ...

    DELPHI用socket多线程传输文件

    - 考虑使用SSL/TLS等加密技术,以保护数据在传输过程中的安全性。 - 对文件名和大小进行验证,防止恶意文件的传输。 6. **性能优化**: - 调整传输块的大小以平衡带宽利用率和CPU负载。 - 使用异步I/O或者事件...

    linux下用socket,子进程,消息队列编写的消息传送

    在实际开发中,这种通信模式可以扩展到更复杂的场景,例如添加错误处理、安全措施(如SSL/TLS加密)、性能优化(如多线程、异步I/O)等。同时,理解并熟练掌握这些基础知识对于成为一名专业的Linux系统开发者至关...

    采用socket实现局域网文件传输

    最后,对于文件传输的安全性,可以考虑使用SSL/TLS协议进行加密,防止数据在传输过程中被窃取。同时,为防止非法连接,可以设置权限验证机制,例如用户名和密码认证。 总结起来,通过socket编程在VC6.0环境下实现...

    socket_to_file_tranlation.tar.gz_传送文件

    本压缩包"socket_to_file_tranlation.tar.gz_传送文件"提供了一个简单的命令行工具,利用Socket技术实现在两台计算机间传输文件。下面我们将深入探讨Socket编程以及如何用于文件传输。 Socket,通常称为套接字,是...

    C# socket TCP 大文件传输同时实现断点续传

    考虑到网络安全,可以使用SSL/TLS对TCP连接进行加密,防止数据在传输过程中被窃取。C#的SslStream类提供了这样的功能。 8. **性能优化**: 可以通过多线程或异步操作提高文件传输效率。例如,使用异步的BeginSend...

    网络游戏-网络上传送数据的加密和解密的系统、装置和方法.zip

    "网络游戏-网络上传送数据的加密和解密的系统、装置和方法"这个主题聚焦于如何保护玩家的信息安全以及游戏的公平性,防止数据被非法窃取或篡改。以下是关于网络游戏中的数据加密和解密技术的详细解释: 1. **数据...

    linux-socket-file-transfer.rar_arm linux socket_linux arm pc soc

    7. **具体实现**:压缩包中的"linux下用socket进行文件传送"可能是包含服务器端和客户端的C语言源代码,演示了如何构建上述过程。这些代码可能包括文件读写、Socket操作、错误处理和数据校验等部分。 在实际应用中...

    密文传送的聊天软件的实现 VC++ MFC

    在本文中,我们将深入探讨如何使用VC++ MFC框架实现一个具有密文传送功能的聊天软件。MFC(Microsoft Foundation Classes)是微软提供的一套面向对象的类库,用于简化Windows应用程序开发。在这个项目中,我们将重点...

    socket编程指南 (2).pdf

    在TCP/IP网络中,Socket的连接由两部分组成:机器的IP地址和程序使用的端口号,这确保了数据能够准确地从一个程序传送到另一个程序。 Socket编程的机制可以比喻为一个管道,数据从一端(发送方)投入,可以从另一端...

Global site tag (gtag.js) - Google Analytics