公钥加密

HTTPS为什么更安全,先看这些 , 网络加密 , 加密解密

跟風遠走 提交于 2020-01-13 02:48:43
投递人 itwriter 发布于 2017-02-27 21:35 评论(10) 有1957人阅读 原文链接 [收藏] « »   HTTPS 是建立在密码学基础之上的一种安全通信协议,严格来说是基于 HTTP 协议和 SSL/TLS 的组合。理解 HTTPS 之前有必要弄清楚一些密码学的相关基础概念,比如:明文、密文、密码、密钥、对称加密、非对称加密、信息摘要、数字签名、数字证书。接下来我会逐个解释这些术语,文章里面提到的『数据』、『消息』都是同一个概念,表示用户之间通信的内容载体,此外文章中提到了以下几个角色: Alice:消息发送者 Bob:消息接收者 Attacker:中间攻击者 Trent:第三方认证机构 密码   密码学中的“密码”术语与网站登录时用的密码(password)是不一样的概念,password 翻译过来其实是“口令”,它是用于认证用途的一组文本字符串。   而密码学中的密码(cipher)是一套算法(algorithm),这套算法用于对消息进行加密和解密,从明文到密文的过程称之为加密,密文反过来生成明文称之为解密,加密算法与解密算法合在一起称为密码算法。 密钥   密钥(key)是在使用密码算法过程中输入的一段参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。很多知名的密码算法都是公开的,密钥才是决定密文是否安全的重要参数,通常密钥越长

HTTPS 为什么更安全,先看这些

安稳与你 提交于 2020-01-13 02:47:52
HTTPS 是建立在密码学基础之上的一种安全通信协议,严格来说是基于 HTTP 协议和 SSL/TLS 的组合。理解 HTTPS 之前有必要弄清楚一些密码学的相关基础概念,比如:明文、密文、密码、密钥、对称加密、非对称加密、信息摘要、数字签名、数字证书。接下来我会逐个解释这些术语,文章里面提到的『数据』、『消息』都是同一个概念,表示用户之间通信的内容载体,此外文章中提到了以下几个角色: Alice:消息发送者 Bob:消息接收者 Attacker:中间攻击者 Trent:第三方认证机构 密码 密码学中的“密码”术语与网站登录时用的密码(password)是不一样的概念,password 翻译过来其实是“口令”,它是用于认证用途的一组文本字符串。 而密码学中的密码(cipher)是一套算法(algorithm),这套算法用于对消息进行加密和解密,从明文到密文的过程称之为加密,密文反过来生成明文称之为解密,加密算法与解密算法合在一起称为密码算法。 密钥 密钥(key)是在使用密码算法过程中输入的一段参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。很多知名的密码算法都是公开的,密钥才是决定密文是否安全的重要参数,通常密钥越长,破解的难度越大,比如一个8位的密钥最多有256种情况,使用穷举法,能非常轻易的破解。根据密钥的使用方法,密码可分为对称加密和公钥加密。 对称加密

HTTPS的中那些加密算法

老子叫甜甜 提交于 2020-01-13 02:45:01
密码学在计算机科学中使用非常广泛,HTTPS就是建立在密码学基础之上的一种安全的通信协议。HTTPS早在1994年由网景公司首次提出,而如今在众多互联网厂商的推广之下HTTPS已经被广泛使用在各种大小网站中。在完全理解HTTPS之前,有必要弄清楚一些密码学相关的概念,比如:明文、密文、密码、密钥、对称加密、非对称加密、摘要、数字签名、数字证书。 密码(cipher) 密码学中的密码(cipher)和我们日常生活中所说的密码不太一样,计算机术语『密码 cipher』是一种用于加密或者解密的算法,而我们日常所使用的『密码 password』是一种口令,它是用于认证用途的一组文本字符串,这里我们要讨论的是前者:cipher。 密钥(key) 密钥是一种参数,它是在使用密码(cipher)算法过程中输入的参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。很多知名的密码算法都是公开的,密钥才是决定密文是否安全的重要参数,通常密钥越长,破解的难度越大,比如一个8位的密钥最多有256种情况,使用穷举法,能非常轻易的破解,知名的DES算法使用56位的密钥,目前已经不是一种安全的加密算法了,主要还是因为56位的密钥太短,在数小时内就可以被破解。密钥分为对称密钥与非对称密钥。 明文/密文 明文(plaintext)是加密之前的原始数据,密文是通过密码(cipher

面试题:从输入url到页面展示

允我心安 提交于 2020-01-12 17:26:58
1.dns解析 为什么需要dns解析? TCP/IP协议只认识ip地址,不认识域名,域名的设计为了方便记忆,让你记住一个 baidu.com 远比记录一个 180.101.49.12 靠谱. 具体什么是dns解析? d=domain n=name s=system 域名系统解析,就是把名字转换成ip 怎么做dns解析(dns解析的过程) 如果你输入的是一个ip,那么显而易见,你不需要dns解析。 把输入的url中的域名(主机名)抽离出来 判断host文件是否有这个主机名 去查本地dns解析缓存 问老大的老大根服务器(TLD顶级域名服务器)是否能查出来 返回一个小老大的ip,你去问这个人试试 这个人不知道,但是他知道A知道,返回A的地址 … 最后返回了一个ip给你 如果是转发模式,会一级一级往上查找 什么是dns负载均衡 在地理位置不同的地方访问同样的 baidu.com ,ip地址不一样。会返回一个你所在的位置适合的ip给你 dns优化策略 使用meta告诉浏览器dns预取 < meta http-equiv = " x-dns-prefetch-control " content = " on " /> 可以让域名不需要点击就在后台解析 因为静态资源一般都是使用其他域名来存放(为了解决一个域名只能同时创建6个左右的tcp连接),所以需要dns预解析来性能优化 浏览器缓存、系统缓存

面试官:说说你对网络请求加密的理解?

天大地大妈咪最大 提交于 2020-01-12 01:08:07
在纸质合同中,由于签名字迹的不可复制性,盖章的唯一性以及纸质合同对涂改的防范措施(比如金额用大写)可以保证上述两点,从而具备法律效应,那么PDF合同如何保障呢?两个重要的概念就是数字签名和数字证书。这项技术广泛运用于文件认证,数据传输等。 为了弄懂这些,我花了2天时间从加密算法开始,到数字签名和CA证书,最后再重新认识下https的原理。 这个也是面试官长问的题目,所以我也顺便整理了下面试题 关注我,私信我【面试题】领取 非对称加密 加密我了解的不多,只知道有这么两种算法:对称加密和非对称加密。 对称加密 :加密和解密的密钥一样,比如用123加密就是用123解密,但是实际中密码都是普通数据在互联网传输的,这样一点密码被中间人截取并破解,加密直接被攻破。 非对称加密 :把密钥分为公钥和私钥,公钥是公开的所有人都可以认领,私钥是保密的只有一个人知道。假设A要发送一 封Email给B,他不想让任何其他人在传输中看到Email的内容,做法就是使用B的公钥对Email加密,只有B的私钥能够解密(B的私钥唯一性保证信件不会泄露)。 某天出意外了,有***冒充A给B发送Email,并且也用B的公钥加密,导致B无法区分这封邮件是否来自A。怎么办?此时A可以用自己的私钥加密,那么B收到邮件后如果用A的公钥可以解密邮件,那么证明这封信肯定来自于A。 OK,通过这个例子我想你们基本明白非对称加密了

公钥可搜索加密及其python实现

孤街浪徒 提交于 2020-01-11 08:03:21
目录 公钥可搜索加密 密码工具库 PEKSBoneh2004方案代码实现 Reference 公钥可搜索加密 公钥可搜索加密(Public-Key Encryption with Keyword Search,简称PEKS)定义如下: S e t u p ( 1 λ ) → ( s k , p k ) \mathsf{Setup}(1^\lambda) \to (\it{sk}, \it{pk}) S e t u p ( 1 λ ) → ( s k , p k ) :初始化算法,输入安全参数 1 λ 1^\lambda 1 λ ,获取私钥 s k \it{sk} s k 和公钥 p k \it{pk} p k 。 E n c ( p k , w ) → c \mathsf{Enc}(\it{pk}, w) \to c E n c ( p k , w ) → c :关键词加密算法,输入公钥和文档关键词 w w w ,输出文档关键词对应的密文 c c c 。 T d G e n ( s k , w ) → t d \mathsf{TdGen}(\it{sk}, w) \to \it{td} T d G e n ( s k , w ) → t d :陷门生成算法,输入私钥和搜索关键词 w w w ,输出搜索关键词对应的陷门 t d \it{td} t d 。 T e s t ( t d

开放式社交网络(OSN网络)之八:企业现有系统接入OSN网络的解决方案客户端篇

江枫思渺然 提交于 2020-01-10 21:35:58
  企业现有系统已经有了自己的完整体系,要完成“跨界通信”需要在用户终端和服务器端进行一定的适配。   客户端适配需要做的工作包括:生成OSN账户、添加跨界好友、发送和接收跨界消息。 生成OSN账户 客户端现有的账户体系需要与OSN账户做一个映射。 OSN账户是ECDSA公钥的散列组合,ECDSA采用Prime256V1曲线。 账号标志头:OSN 账号主体:base58编码字符串,base58编码与bitcoin一致。以后的所有base58都使用此编码。 账号主体二进制定义: |字段尺寸|描述|数据类型|说明| |2byte|版本|uchar|账号使用版本号,初始为1000| |1byte|公钥标志|uchar|ECDSA公钥采用压缩模式和非压缩模式两种 04表示非压缩模式,公钥长度为64byte 03 02 表示压缩模式,公钥长度为32byte| |64/32byte|公钥|uchar|非压缩公钥长度为64byte,压缩公钥只保留X,长度为32byte| |32byte|shadow hash|uchar|一个地址的生成需要2对椭圆加密密钥对,后一对在地址中仅保留公钥的hash| 客户端账户推荐在用户终端生成,生成以后由客户端发起与原有账户的绑定。   添加跨界好友   由于每个企业的制度不同,通过关键字搜索添加好友不一定能成功,因此推荐由双方好友相互交换OSN账户来添加好友。

支付宝RSA签名

天大地大妈咪最大 提交于 2020-01-10 15:40:50
1、参考网上相关文章,开放php中的openssl,但使用网上例子调用openssl_pkey_new,一直报100013错误。后改用用支付宝提供的SDKdemo程序 发现使用提供的privkye,可以生成签名串,但使用苹果电脑生成的key就不成功。 参考此文http://orangeholic.iteye.com/blog/2161771 PHP RSA加解密示例 ,在centos下 yum install openssl,再利用生成命令产生privkey和publickey能生成签名。 2、例子说明,参考支付宝官网文档https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1 服务端SDK 方法说明 加签方法(如果不用SDK调用,推荐用该方法加签) 1 2 3 4 5 6 /** @param params 参数列表 key-参数名称 value-参数值 @param privateKey 加签私钥 @param charset 加签字符集 **/ String AlipaySignature.rsaSign(Map<String, String> params, String privateKey, String charset) 验签方法(同步请求时,如果不用SDK调用

iOS RSA公钥加密数据 服务端接受PHP私钥解密 反过服务端公钥加密数据 iOS端私钥解密数据

扶醉桌前 提交于 2020-01-10 01:56:36
*/ /*--> */ */ /*--> */ 加密传输的数据,采用 RSA算法,RSA是一种非对称算法,算法需要一对密钥,使用其中一个加密,需要使用另外一个才能解密。有可私钥可以直接生产公钥。 iOS SDK并不支持私钥加密,公钥解密。可以通过OPENSSL第三方库解决。 使用openssl命令行生成密钥对 openssl req -x509 - out public_key.der -outform der - new -newkey rsa: 1024 -keyout private_key.pem 根据提示,填入私钥的密码(代码中需要用到),签名证书的组织名、邮件等信息之后,就会生成包含有公钥的证书文件public_key.der合私钥文件private_key.pem。 public_key.der文件用于分发到iOS客户端进行公钥加解密,而private_key.pem文件留在服务器端供php使用。当然,为了在服务器端进行加解密测试,那么我们还可以生成一个服务器端PHP使用的pem公钥文件: openssl rsa - in private_key.pem -pubout - out public_key.pem 上面这个命令就会根据输入的私钥文件生成pem格式的公钥文件了。从这里也可以看到,根据私钥,我们是可以生成相对应的公钥的,这也就是为什么我们要把公钥放在客户端

java 安全加密api(cipher,signature,mac...)

南笙酒味 提交于 2020-01-09 17:01:58
前言 本文主要讲解常用加密算法,消息摘要,二进制字符变换等的java实现,对于加密算法本身的原理只会做简单的介绍,详细的原理可百度。 相关概念 加密 加密是指将可读取的明文作为输入,通过特定的变换操作得到不易读取的输出(通常是二进制序列),目前常用的加密算法包括 对称加密的AES/DES,非对称加密的RSA/DSA/EC,加密很重要的一点就是解密,无论多复杂的数学变换,一定可以通过相应的逆变换得到原始输入,这是的加密行为才有意义。 hash(哈希变换) hash值又称散列值或者消息摘要,对输入的字符串或者二进制序列通过一定的变换得到固定长度的输出,它是一个不可逆的过程,理解这个不可逆的过程可以从数学中的求余函数理解,例如:11/10 = 1 … 1余数是1,以除以10作为变换,余数1作为输出,不可能通过余数是1得到被除数是11,因为有可能是21、31、41。。。。。。等等,同时和求余类似,hash碰撞指的就是不同的输入可能得到相同的输出。当然对于真正的hash变换,不可能像求余过程如此简单,但是这个不可逆过程的原理是类似的。常用的hash变换有MD5/SHA1/HmacSHA1/HmacMD5…等,hash变换的目的并不是让输入不可读取,而是让输入不可改变。 字节变换 文件通常会分为文本文件和二进制文件,文本文件通过(Unicode/UTF-8/ASCII)编码之后是可以读取的