对通过网络传输的数据进行加密

数据传输加密技术

目的是对传输中的数据流加密, 常用的方针有线路加密和端对端加密两种。前者侧重
在线路上而不考虑信源与信宿, 是对保密信息通过各线路采用不同的加密密钥提供安全
保护。后者则指信息由发送者端通过专用的加密软件,采用某种加密技术对所发送文件进
行加密,把明文(也即原文)加密成密文(加密后的文件,这些文件内容是一些看不懂的代
码), 然后进入TCP/IP数据包封装穿过互联网, 当这些信息一旦到达目的地, 将由
收件人运用相应的密钥进行解密, 使密文恢复成为可读数据明文。目前最常用的加密技
术有对称加密技术和非对称加密技术,对称加密技术是指同时运用一个密钥进行加密和解
密,非对称加密方式就是加密和解密所用的密钥不一样,它有一对密钥,称为“公钥”和
“私钥”两个,这两上密钥必须配对使用,也就是说用公钥加密的文件必须用相应人的么
钥才能解密,反之亦然。
package com.cyh.util;

import java.security.MessageDigest;

public class MD5 {

private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
      "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

// 十六进制下数字到字符的映射数组

/** 把inputString加密 */
  public static String createPassword(String inputString) {
    return encodeByMD5(inputString);
  }

/**
   * 验证输入的密码是否正确
   * 
   * @param password
   * 真正的密码(加密后的真密码)
   * @param inputString
   * 输入的字符串
   * @return 验证结果,boolean类型
   */
  public static boolean authenticatePassword(String password,
      String inputString) {
    if (password.equals(encodeByMD5(inputString))) {
      return true;
    } else {
      return false;
    }
  }

/** 对字符串进行MD5编码 */
  private static String encodeByMD5(String originString) {
    if (originString != null) {
      try {
        // 创建具有指定算法名称的信息摘要
        MessageDigest md = MessageDigest.getInstance("MD5");
        // 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
        byte[] results = md.digest(originString.getBytes());
        // 将得到的字节数组变成字符串返回
        String resultString = byteArrayToHexString(results);
        return resultString.toUpperCase();
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
    return null;
  }

/**
   * 轮换字节数组为十六进制字符串
   * 
   * @param b
   * 字节数组
   * @return 十六进制字符串
   */
  private static String byteArrayToHexString(byte[] b) {
    StringBuffer resultSb = new StringBuffer();
    for (int i = 0; i < b.length; i++) {
      resultSb.append(byteToHexString(b[i]));
    }
    return resultSb.toString();
  }

/**
   * 将一个字节转化成十六进制形式的字符串
   */
  private static String byteToHexString(byte b) {
    int n = b;
    if (n < 0)
      n = 256 + n;
    int d1 = n / 16;
    int d2 = n % 16;
    return hexDigits[d1] + hexDigits[d2];
  }

public static void main(String[] args) {
    String password = MD5.createPassword("yaowenchao");
    System.out.println("对yaowenchao用MD5摘要后的字符串:" + password);
    String inputString = "tianshi0253";
    System.out.println("tianshi0253与密码匹配?"
        + MD5.authenticatePassword(password, inputString));
    inputString = "yaowenchao";
    System.out.println("yaowenchao与密码匹配?"
        + MD5.authenticatePassword(password, inputString));
  }

}

时间: 2024-10-06 19:01:57

对通过网络传输的数据进行加密的相关文章

程序性能优化之网络传输与数据存储优化(五)下

阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续从7Z极限压缩和WebP使用来介绍网络传输与数据存储优化: 一.7Z极限压缩 一些文件过大或者是容量太大了,占用硬盘太多空间了.此刻可以使用压缩软件进行压缩,让它的体积变小了.其中极限压缩可以让文件夹或者是文件,压缩的最小.那么如何使用这个极限压缩功能的. ? 1.你要到网上下载这个压缩的程序,点击它,点击[install]. ? ? 2.此刻软件

网络传输基本协议

介绍 定义 在配置管理中,终端服务特性提供了设备配置的管理接入接口和交互界面,为用户提供操作场所. 主要包括: Console口登录 Telnet Server/Client SSH登录,支持Password.RSA验证.DSA验证 支持定制User-interface,提供对登录用户多种方式的认证和授权功能 文件传输特性可以提供系统文件.配置文件的传输控制和文件系统的远程简单管理. 主要包括: FTP Server/Client TFTP Client 基于SSH协议的文件传输SFTP Cli

使用加密解密技术和CA认证解决网络传输中的安全隐患

服务端:xuegod63.cn   IP:192.168.1.63 客户端:xuegod64.cn   IP:192.168.1.64   网络安全: 网络传输中的安全隐患-.   中间人攻击 全隐患:        解决方法 1.窃听-- >  加密 2.篡改 ->  哈西算法:MD5,sha1 (检查数据完整性) 3.伪装(钩鱼网站,伪装WIFI)  ->  身份认证(用户名/密码.数字证书) 4.网络中断 (内网冒冲网关,DDOS )  –>绑定静态arp地址: 加大服务器和

网络传输的加密与解密(不是很难理解的一个版本)

--网络传输的加密与解密--    由于互联网早期并没有考虑到数据报文安全的问题,早期的理念都是基于进行通信的.现在随着网络兴起,互联网上慢慢有很多"犯罪团体",用较低的犯罪成本通常是基于一个网络通信协议的一个小的漏洞来完成窃取.篡改.重播其他人的数据报文. 而往往计算机网络安全维护者和那些恶意攻击者玩的就是一个类似猫鼠游戏,网络安全维护者处处考虑对计算机的安全负责,而恶意攻击者处处找安全的漏洞.而对于那些恶意攻击方式大体分两种. 一种叫被动攻击,大体上来说就是窃听,攻击者获得传输信息

大文件/数据网络传输方法总结(转载)

网络编程中不免会遇到需要传输大数据.大文件的情况,而由于socket本身缓冲区的限制,大概一次只能发送4K左右的数据,所以在传输大数据时客户端就需要进行分包,在目的地重新组包.而实际上已有一些消息/通讯中间件对此进行了封装,提供了直接发送大数据/文件的接口:除此之外,利用共享目录,ftp,ssh等系统命令来实现大文件/数据也不失为一种好的方法. 1.基础的基于socket进行传输 基础的基于socket进行传输关键在于控制,需要自己行分包和组包. ////////////////////////

atitit.二进制数据无损转字符串网络传输

1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 1 2. base64 2 3. iso-8859-1  (推荐) 2 4. utf-8 (不能使用) 2 1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 gbk会造成信息丢失 由于有些字符在gbk字符集中找不到对应的字符,所以默认使用编码63代替,也就是?(问号)...gbk仅仅能兼容低位asc编码(英文字母),高位编码要使用来编码汉字了... 作者::老哇的爪子Attilax艾龙,EMAIL:[email p

数据的加密传输——单片机上实现TEA加密解密算法(转)

源:数据的加密传输——单片机上实现TEA加密解密算法 各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实现起来比较困难,但一种叫TEA的加密算法特别适合单片机使用. TEA(Tiny Encryption Algorithm)是一种简单高效的加密算法,以加密解密速度快,实现简单著称.算法很简单,TEA算法每一次可以操作64-bit(8-byte),

网络传输与加密 (2)

网络传输与加密 让我们先回顾一下上次的验证过程,如下图 有了"原信息"和它对应的"md5签名字符串",我们就可以做最基本的信息验证:通过md5签名字符串的一致性,来保障我们收到的信息没有受到更改. P.S.:由于签名signature在后续文章中会另有所指,为区分md5签名字符串,我们将md5签名字符串的叫法,更改为md5指纹字符串.意思同签名是一样的,就是A之所以是A的证据.特征,可以用签名来表示,也可以用指纹来表示.这里,我们开始将md5字符串对应的这个特征,称

Android使用KeyStore对数据进行加密

谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据.权限.网络.处理凭据.输入验证.处理用户数据.加密等方方面面 密钥的保护以及网络传输安全 应该是移动应用安全最关键的内容.Android 提供大量用来保护数据的加密算法,例如 Cipher 类中提供了 AES 和 RSA 算法,再例如安全随机数生成器 SecureRandom 给 KeyGenerator 提供了更加可靠的初始化参数,避免离线攻击等等. 而如果需要存储密钥以