https能否省掉hash过程,直接对整个证书进行CA私钥加密,能解密则为真,不能则未假?

https通过根证书公钥解密摘要信息,然后和证书信息做hash后的值做了对比,从而判断证书的真伪。这里为什么不能直接省掉做hash的过程,直接对整个证书内容进行CA私钥加密,如果客户端用根证书中的公钥能解密则证书是真的,当然这里的能解密不是严格意义上的能解密,而是解密后的格式和正常格式一致,就认为能解密。而不能解密则认为证书是假的。
我自己的猜测:
1.数字证书需要找到这个证书的颁发者来验证证书真假,意味着颁发者一定是不能加密传输的,所以造成证书一部分加密,一部分非加密。很不整齐,虽然现在也是一部分加密,一部分非加密,但是加密部分仅是摘要信息,除摘要信息外部分是没有加密的。
2.如果整个证书加密,那客户端解密时根本不确定这个证书是真还是假,相比较对hash解密而言,对整个证书解密效率肯定会差很多。
3.如果整个证书加密,意味者证书发送到客户端,客户端完全不发看到证书的任何信息,除证书的颁发者。对维护、问题定位造成很大困难。
4.如果证书恰巧被篡改,而且篡改完的用户名和用户公钥随便通过一个私钥加密后传给客户端,客户端此时拿着本地CA公钥解密恰好解密出一个和正常公钥用户信息格式一样的数据,会骗过所有认证。客户端误认为这个证书是真的。虽然这种情况发生后,客户端拿到的公钥一定是不正确的(因为被篡改的证书不是通过CA私钥加密的),但客户端依然会用这样的一个错误公钥加密信息传递数据。这样的数据即无法被服务器解析也无法被篡改者解析,直接造成了https不可用。

3个回答

hash是为了防止传输过程中被篡改,你公钥能解只能说明是这个私钥加密的,但是内容是否正确,要用解密后hash比较来验证

shangmingtao
M1lo 找到答案啦,实际是因为用hash加密效率比较高。整个证书加密的话太长了,会导致加解密很慢。当然您讲的修改一部分内容也有道理,最关键还是用户公钥。如果hash碰撞发生,且碰撞发生后公钥可以被篡改的话问题就严重了。会直接导致https不安全
接近 2 年之前 回复
oyljerry
oyljerry 但是可以修改一部分内容,比如过期日期,签发者名字等。你解密还是成功,也不会乱码。而且你也没法知道是否被篡改
接近 2 年之前 回复
shangmingtao
M1lo 用CA私钥对整个证书内容加密也可以啊,客户端拿到加密后的内容,用根证书解密.如果整个证书传输过程中被改了,那解密的内容肯定会乱啊.这样不就判断出证书真伪了?
接近 2 年之前 回复

可以了解一下非对称加密算法,私钥加密信息的长度是有限制的。比如RSA算法,每次加密的字节数,不能超过密钥的长度值减去11,1024位的私钥,只能最多加密1013位的信息,如果证书的内容长度超过这个长度,就会加密失败。这才是需要hash的本质原因。当然,加密长度越短的信息,速度越快,这也是事实。hash碰撞就不用考虑了,如果有那么大计算能力,差不多可以破解私钥了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HTTPS CA证书与TLS建立过程
自己在网上搜了好多资料,根据自己的理解整理了HTTPS、CA证书、TLS建立的过程,简单画了个图
rsa对证书的加密和解密
为什么我用RSA算法用公钥对文件进行加密,在解密时,只能由自己进行解密,用另外一个私钥进行解密时,就报rnrn不正确的数据。rnrn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rnrn异常详细信息: System.Security.Cryptography.CryptographicException: 不正确的数据。rnrnrn源错误: rnrnrn行 100: if (blocksize == k) rn行 101: rn行 102: encryblock = oRSA1.Decrypt(buffer, false); rn行 103: fs.Write(encryblock, 0, encryblock.Length); rn行 104: rn rnrn源文件: d:\EncryptedSystem\EncryptedSystem\Default.aspx.cs 行: 102 rnrn堆栈跟踪: rnrnrn[CryptographicException: 不正确的数据。rn]rn System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) +33rn System.Security.Cryptography.Utils._DecryptKey(SafeKeyHandle hPubKey, Byte[] key, Int32 dwFlags) +0rn System.Security.Cryptography.RSACryptoServiceProvider.Decrypt(Byte[] rgb, Boolean fOAEP) +264rn _Default.Decrypt(String FilePath, String OutFile) in d:\EncryptedSystem\EncryptedSystem\Default.aspx.cs:102rn _Default.Button2_Click(Object sender, EventArgs e) in d:\EncryptedSystem\EncryptedSystem\Default.aspx.cs:260rn System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105rn System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107rn System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7rn System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11rn System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33rn System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5087rnrn rn这个错误 就是说encryblock = oRSA1.Decrypt(buffer, false);解密时发生错误。
私钥加密 公钥解密
私钥加密 公钥解密 我方公钥 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYJiltAnJWUDHXH+qMQdjYe+Rzgl0z53f54s92vh6QMfOtugAYtefG7AadCyCcSqETefqWxMQBYbK7tGZpCx6Mf/1j5RYFz2cYyUg9jwCJnVFyEqDwBRj9hmsLC+qkHOphvdgPa9xC3GIYPVa...
Python 进行RSA私钥加密,公钥解密
使用M2Crypto库 需要安装M2Crypto库 # -*- coding: UTF-8 -*-import M2Cryptofrom Crypto.PublicKey import RSAimport base64import sys#私钥加密,公钥解密def pri_encrypt(msg, file_name): rsa_pri = M2Crypto.RSA.load
https工作原理及CA证书部署
环境说明 1、apache版本: Apache/2.2.15 (Unix) 2、weblogic版本: 10.3.6 https的工作原理 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密
ssl与https(2)-CA证书
问题1:由于CA 根证书不在“受信任的根证书颁发机构”存储区中,所以它不受信任 解决:讲证书证书导入即可,具体步骤: 打开浏览器,选择【工具】>【INTERNET选项】>【内容】>单击【证书】>选择【受信任的证书派发机构】>【导入】(选择你的证书所在位置,导入即可。)...
hash 加密 解密
参考示例:https://blog.csdn.net/fd2025/article/details/80035647 1,对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4等 2,非对称加密:密钥成对出现,分别为公钥和私钥,从公钥无法推知私钥,反之,从私钥也无法推知公钥,加密和解密使用不同的密钥,公钥加密需要私钥解密,反之,私钥加密需要公钥解密。...
如何使用hash进行数据的加密和解密?
偶对此东西从未接触过,可BOSS不知从哪听来一个HASH,竟要我用HASH加密和解密,只好向各位求助了,HELP ME!3q!
对档案进行加密和解密
对档案进行加密和解密 Encrypt and decrypt the file
对密码进行加密和解密
在项目中我们常常会对输入的密码进行加密,用来维护系统的安全。这次采用的方法是用MD5进行加密,该算法有压缩性、容易计算、抗修改性、强抗碰撞等诸多好处,现总结代码如下,以备后需。
对数据进行加密、解密
请问,谁有用C#写的加密、解密函数,如果谁有,请尽快回复,小妹急用。谢了。
对文本进行加密和解密
这是一款对文本进行加密和解密的程序,方便使用。
自建CA证书和对应私钥(PEM格式)
本资源是自建的一个CA证书和私钥,可以用于测试https网络安全测试,在服务器端使用此证书配置,终端访问可以实现https访问,其中证书和密钥都是以文件的形式存储,证书的有效期是两年。
openssl RSA私钥 公钥 CA证书生成
1.生成CA根证书 1.1生成ca秘钥,得到ca.key openssl genrsa -out ca.key 2048 1.2生成ca证书签发请求,得到ca.csr openssl req -new -out ca.csr -key ca.key 1.3生成ca根证书,得到ca.crt openssl x509 -req -days 3650 -in ca.csr -signkey ...
公钥私钥,HTTPS,CA证书机构,单向和双向认证
公钥私钥:http://blog.csdn.net/tanyujing/article/details/17348321 互相加解密 A 拥有公钥(公开发布)和私钥(个人),B也拥有公钥和私钥。 公钥加密的数据要用个人私钥解密,个人私钥加密的发布数据要用公钥解密。 A用B的公钥加密  发送  数据 给B,B用B的私钥解密。 保证内容不被别人看到。 B用B的私钥加密  发送 数据   给...
https证书生成过程
cp /etc/pki/tls/openssl.cnf  /tmp/openssl.conf vim /tmp/openssl.cnf 找到req_extensions 这一行: 添加如下内容 req_extensions = v3_req # The extensions to add to a certificate request [v3_req] basicCo
https证书加密
https服务器的搭建,自签名证书的创建,android和iOS对https的访问
安装CA证书服务的过程
资源名称:安装CA证书服务的过程   资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Rsa 私钥加密 公钥解密
用于私钥加密 公钥解密用于私钥加密 公钥解密用于私钥加密 公钥解密
RSA私钥加密公钥解密
RSA私钥加密公钥解密,亲测,可根据需要改变私钥 跟 公钥
C#RSA私钥加密公钥解密
利用System.Numerics.BigInteger实现,私钥加密,公钥解密。兼容PKCS1填充方式。有效文件只有MyRSA.cs一个,其它文件是因为带了一个演示窗口。
公钥加密私钥解密&私钥加密公钥解密
先明确一下概念: 公钥加密私钥解密,也可以说是 "公共密钥加密系统 " 私钥加密公钥解密,一般不这么说,应叫 "私钥签名,公钥验证 ",也可以说是“公共密钥签名系统” 再来说一下 "公共密钥签名系统 "目的:(如果晕就多看几遍,这个没搞清,后面的代码就更晕)
解密https的建立过程
1. https协议简介      为什么是协议简介呢?因为https涉及的东西实在太多了,尤其是一些加密算法,非常的复杂,对于这些算法面的东西就不去深入研究了,这部分仅仅是梳理一下一些关于https最基本的原理,为后面分解https的连接建立以及https优化等内容打下理论基础。 2. 对称加密算法      对称加密是指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前
java 证书的加密与解密
证书,加密的相关知识可以参考阮一峰的密码学笔记和数字签名是什么    代码中使用的demo.p12使用jdk自带的keytool证书生成,私钥密码为123456      import java.io.FileInputStream; import java.security.KeyStore; import java.security.PrivateKey; import ja...
java 证书 加密 解密
NULL 博文链接:https://philip01.iteye.com/blog/659749
加密、解密详解及CA的实现
欢加密、解密详解及CA的实现http://www.tuicool.com/articles/YV3iYz加密方式1、对称加密对称加密是基于加密算法+口令的,它主要有两个特性: 1)、加密方、解密方使用同一个口令 2)、将原文分割成固定大小的块,对这些块进行加密
记https请求时证书、公钥、私钥、加密的各种问题
客户端私钥进行对数据签名时发生的错误: Caused by: java.lang.IllegalArgumentException: unknown object in getInstance: com.android.org.bouncycastle.asn1.DEROctetString 有些机器可能会是这样的错误: Caused by: java.lang.IllegalArgumen
能否对目录进行加密?
能否对目录进行加密?如那位大哥知道请指导一下!
能否对函数进行加密?
既然能对储存过程加密(只能运行不能看代码),能否对函数进行加密呢?
Apache Httpd 2.2 配置CA证书,实现Https加密通讯
个人博客地址:http://www.pojun.tech/ 欢迎访问什么是CA证书    关于什么是CA证书,以及如何使用Open-SSL申请和搭建CA证书,我们在之前的文章中已经有过介绍,这里不再赘述。若有疑问,可参考之前的文章。 http://www.pojun.tech/blog/2017/09/11/linux-middle-command-1 http://xiaoshua
RSA加密 私钥加密公钥解密
此包内包含云端和客户端。实现RSA私钥加密,公钥解密,保证了可现实加密和解密使用不同的字符串。
RSA加密测试,私钥加密,公钥解密
RSA加密测试,私钥加密,公钥解密
win2k加密文件在没有备份私钥和证书的情况下,如何解密???
重装win2k,如何在管理员权限下进入加密文档?rn找微软解决需要那些程序?
CA的信任及公钥和私钥产生过程讲解
本套课程共20课时,主要内容包括公钥加密和私钥签名的工作过程,CA的信任及公钥和私钥产生过程,证书颁发机构(CA)的安装与使用方法,CA在实际应用中的配置使用过程,从属CA的安装方法,CA进行备份还还原操作,吊销证书、导出与导入证书、续订证书。
如何对密码进行hash加密
先倒入模块 from werkzeug.security import generate_password_hash 对明文的密码进行加密, 并且将加密后的密码以字符串形式返回 例如: p1 = generate_password_hash('lance') print(p1) p1的结果为:pbkdf2:sha256:50000$VZqh6nBQ$8771837aa12266b88e...
公钥加密,私钥解密,对吗?
-
https通信加密过程
http://www.2cto.com/Article/201407/315433.html 网站如何通过加密和用户安全通信 SSL (Secure Sockets Layer) 是用来保障你的浏览器和网站服务器之间安全通信,免受网络“中间人”窃取信息。 SSL原理很简单。当你的浏览器向服务器请求一个安全的网页(通常是 https://) 服务器就把它的证书和公
HTTPS加密过程
客户端发起HTTPS请求(就是用户在浏览器里输入HTTPS网址,然后连接到服务端的443端口) 服务端的配置采用HTTPS协议的服务器必须要有一套数字证书。这套证书其实就是一对公钥和私钥。(可以想象成一把钥匙和一个锁头,只是世界上 只有你一个人有这把钥匙,你可以把锁头给别人,别人用这个锁把重要的东西锁起来,然后发给你,因为只有你个人有这把钥匙,所以只有才能看到被锁起来的东西。) 传送证书(...
delphi (RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA加密
支持 (RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA1加密、SHA224加密、SHA256加密、SHA384加密、SHA512加密
【Delphi】 (RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA加密
【Delphi】支持 (RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA1加密、SHA224加密、SHA256加密、SHA384加密、SHA512加密
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池