加密的TCP通讯全过程

加密的TCP通讯全过程转自:http://blog.csdn.net/laotse/article/details/5910378首先3个概念,1、不可逆加密2、可逆对称加密3、可逆非对称加密1、不可逆加密,大家最熟悉的一种,md5sha1就是,加密后就不能解密,只能用于存储密码和校验文件变动,不能用于网络通讯。2、可逆对称加密,用一个钥匙把内容加密,只要有这个钥匙的人就可以解密,就像登录wi

大家好,又见面了,我是你们的朋友全栈君。

转自:http://blog.csdn.net/laotse/article/details/5910378

首先3个概念,1、不可逆加密2、可逆对称加密3、可逆非对称加密

1、不可逆加密,大家最熟悉的一种,md5 sha1就是,加密后就不能解密,只能用于存储密码和校验文件变动,不能用于网络通讯。

2、可逆对称加密,用一个钥匙把内容加密,只要有这个钥匙的人就可以解密,就像登录windows,要一个密码,只要有密码谁都能登录,但是如果没有这密钥,就很难很难解密,就像破解windows密码需要穷尽一样。非常适合网络加密通讯。如果客户和服务器都有着把钥匙,那么通讯过程是保密的,即使通讯内容被截获,看到的也是一堆乱七八糟的加密后的byte,通讯内容是安全的。

但是这就产生一个问题了,客户端有这把钥匙在程序某个部分,如果被反编译或者什么的被人发现了,那么以后所有客户端和服务器通讯都可以被截获者解密,从而失去了加密意义,所以这把钥匙服务器要经常变换不能事先给客户端,需要每次通讯前才给客户端,但是这样这把钥匙还是可以被截获着截获,所以如何安全发送这把钥匙就成了关键,只要钥匙安全了,那么整个对称加密就安全了,如果钥匙被人发现了,这个过程就没有秘密可言。

所以可逆非对称加密就出现了

3、可逆非对称加密,客户端和服务器通讯的时候,客户端先用非对称加密生成2把随机钥匙,一把叫公钥一把叫密钥,关键就在这里,用这个公钥加密的内容不能用公钥解密,只能用密钥解密,客户端把公钥发送给服务器,服务器用这个客户端生成的公钥把某内容加密后返还给客户端,客户端用那把密钥解密。

仔细看看这个过程,假定有个拦截者,一开始,客户把公钥发送给服务器,比如让拦截者给截获了,服务器返回用这个公钥加密的内容,也让拦截者给截获了,拦截者想用这个公钥解密,但是发现不行,公钥加密的内容只能用密钥才能解密,公钥只起一个加密作用。那密钥在哪呢?在客户端那个程序的内存里,并没有通过网络发送(而且呢,这个公钥和密钥是临时随机生成的,在内存里,当客户端不运行的时候即使反编译该程序也看不到),客户端那个程序就可以解密,而拦截者即使截获了公钥和公钥加密的内容,也是白忙一场一点用都没有。所以服务器返回的那段用公钥加密的内容是安全的。

 

大家是不是发现非对称加密比对称加密要安全不知道多少倍啊,全随机的,那直接全都用非对称加密就天下太平了那还要对称加密干什么呢?但是非对称虽好,但是却很慢,不能对大量的通信内容进行加密通信(不知道,反正都这么说),只能开始通信的时候用这种方式传送一点很重要的内容。

那用来传送点什么内容呢?

 

用来传送对称加密的那边钥匙就非常合适,2部分不是说对称加密唯一不安全的地方就是那边钥匙的传送过程不安全么,那么先用非对称加密传送对称加密的钥匙,这样对称加密的钥匙的传送过程就安全了,钥匙安全问题解决了所以对称加密和非对称加密就一样安全了,这时就关闭非对称加密,以后都用对称加密了,速度也上来了。这就是非对称加密和对称加密配合使用的过程,网上很多应用都是这种方式。

在.net下实现这3种加密太容易了,都是封装好的不能再好的类。过程几行就完了。对称加密用TripleDESCryptoServiceProvider,最大支持24字节(192位)的加密,非对称用RSACryptoServiceProvider。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137794.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据接口-免费版(股票数据API)「建议收藏」

    获取股票数据的源头主要有:数据超市、雅虎、新浪、Google、和讯、搜狐、ChinaStockWebService、东方财富客户端、证券之星、网易财经。数据超市2016年5月6日更新。根据最近频繁出现的数据超市,可以无限制获取相关数据,而不再需要使用爬虫等方式获取,这样不仅节省了极大资源,也有利于遍历数据。具体的方法不再赘述,列出来相关网站清单,开发者可自行到这些网站查询调用方法。聚合数据 htt…

    2022年4月7日
    74
  • scala List immutable.Map[String,Any]]的排序问题

    scala List immutable.Map[String,Any]]的排序问题

    2021年5月12日
    119
  • 关于Maven项目build时出现No compiler is provided in this environment的处理[通俗易懂]

    关于Maven项目build时出现No compiler is provided in this environment的处理[通俗易懂]近日有同事遇到在编译Maven项目时出现[ERROR]Nocompilerisprovidedinthisenvironment.PerhapsyouarerunningonaJREratherthanaJDK?的问题,原以为这是个个例,源于同事粗心,配置环境出问题造成,后到百度查看一下,遇到这个问题的不在少数,但是对问题的解释没有说到根源,

    2022年10月21日
    0
  • java des ecb_【转】 java DES ECB模式对称加密解密

    java des ecb_【转】 java DES ECB模式对称加密解密最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题:1.DES对称ECB模式加密的数据,长度必须为8的倍数2.加密的数据,加密后先转码(因为加密后的数据我是转码了),否则解密是乱码格式一下是源代码:这个是加密的工具类:packagecom.palmfu.sql;importjava.security.Key;importjavax.crypto.Ciphe…

    2025年6月24日
    1
  • vue关闭eslint检查_vue 校验规则 提取

    vue关闭eslint检查_vue 校验规则 提取在创建项目时,手贱点击了yes。那么怎样关闭Eslint验证呢?1.打开build\webpack.base.conf.js2.找到如下代码,并ctrl点击红框框起的代码3.修改useEslint:true,为false4.最后,在修改完配置文件之后,在终端输入nmprundev。这一点非常重要,我就是没有漏了这步操作,弄了很久。…

    2022年10月8日
    0
  • 漫步者lollipods如何调节音量_漫步者LolliPods怎么配对双耳-使用教程[通俗易懂]

    不少用户在入手漫步者LolliPods后不知道怎么配对双耳,小编今天为大家带来了漫步者LolliPods的使用教程,感兴趣的朋友不要错过了哦。漫步者LolliPods配对双耳教程方法一一、先随便连接一只耳机,连接以后点击断开连接,把左耳放回充电仓,二、拿出右耳,把充电仓盖上让右耳断开左耳的链接,然后手机搜索能搜到右耳连接,三、这样两个都可以匹配上了,并且使用时随便一只连接都是主耳机方法二第一:拿出…

    2022年4月9日
    722

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号