`
maosuhan
  • 浏览: 111702 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

有关密钥私钥那些玩意的总结

阅读更多

    这个世界有两种东西就密钥。这个是怎么解释的呢?所谓的钥匙,其实就是一种算法,你看那个钥匙能够打开一扇门,那个算法其实就体现在钥匙上的凸凸凹凹上,门一看这个钥匙所体现的算法与自己的琐其契合的,那么当然就可以信任开门者了。但是呢,这个世界没有什么万能|钥匙的说法,当然你可以选择拿个很大很大的铁锤把门砸碎了破门而入,那你还不如直接去炸计算机算了!那么密钥就是我们用这种算法加工数据,其结果会符合预期,从而实现正确的身份验证。

 

    我们的计算机天才想出了两种机制,一个是对称的公钥加密,一种是非对称的私钥公钥加密。

 

公钥加密,用一个密钥去加密和解密数据。为什么是对称的呢?为什么密钥可以同时进行加密和解密呢?这不是胡扯吗?其实是这样的,密钥加密是一种算法,比如说是两个素数的成绩,那么它的算法就是这样你难道想不出解密的算法吗?就只要找素数因子就行了。或者是通常的什么a对应b,b对应c……然后z对应a。难道你不能倒推过来吗?所以这个对称就是你知道加密算法那么自然可以推导出解密算法,原来是这个意思。这种算法,有个好处就是快,效率高。但是呢,管理比较困难,为什么呢,比如说甲要和乙通信,则甲与乙之间需要有两个密钥,一个是甲公布给乙的,一个是乙公布给甲的。但是呢,如果一个公司有一千个人,那么他们直接爱呢都要通信的话,我给你发信息,我就要找出我们之间要用那种公钥来加密。整个公司则需要1000*999个密钥,这简直就是噩梦啊!所以管理比较困难。你不要认为,你公布的密钥可以所有的人共用,阿猫阿狗都用,那还加密个屁啊!公钥也是要保密的。至于这里面的算法有3DES算法,Blowfish算法,RC5算法。

 

那么非对称的呢?这里有一个公钥也有一个私钥,非对称密钥的加密密钥与解密密钥完全不同,并且不可能从任何一个密钥推导出另一个密钥。当明文要通过加密后发送给接收方时,先得到接收端的密钥对产生器产生的一对密钥中的加密公钥,通过这个密钥将明文转变为密文,发送给接收端,而接收端接收到密文后,使用一对密钥中的解密密钥,即私钥,来将密文转变为明文。一般情况下,我们用公钥做为加密密钥,用私钥作为解密密钥,这样就可以实现多个发送者向指定的接受者发送信息了。如果用私钥加密,公钥解密,就可以实现特定的发送者向多个接收者发送信息了。这样N个用户进行通信,只需要N对密钥就可以了。这正是因为加密解密的不对称引起的。常用的非对称密钥算法包括RSA算法、DSA算法、PKCS算法和PGP算法。

 

 

这里又有一个数字签名的概念。我们要传一篇机密的信息,比如说是“老婆们,我爱你”。按双方约定的HASH算法如md5计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。将该报文摘要值用发送者的私人密钥加密,然后连同原报文(“老婆们,我爱你”)一起发送给接收者,而产生的报文即称数字签名。接收方收到数字签名后,用同样的HASH算法对报文(“老婆们,我爱你”)计算摘要值X,然后我们用发送者的公开密钥进行解密报文摘要得到了另一结果Y。如XY相等则说明报文确实来自所称的发送者。这样,当然可以保证我对她们发的信息足够保密。但是呢,其他人也可以说他是我啊。那怎么办呢?解决方案如下,因此公钥必须向接受者(我的老婆们)信任的人(身份认证机构可以说是婚姻局)来注册。注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用我的密钥签发的文件。 这里,就涉及到第三方了,因为第三方是知道我的私钥的,这就需要第三方有足够的威信和保密性。这个私钥我觉得就像我们的签名一样,因为各个人都有自己的笔迹的特点,这个是只有自己才会的,其他人是不会模仿的,虽然你能看到他的字,但是你不知道这到底是在怎么写出来的,这就是我的私钥。当然真实的签名机制和这里的机制还是有许多不同的,我只是打个比方。

 

 

 

分享到:
评论

相关推荐

    rsa生成私钥密钥

    总结来说,RSA是一种非对称加密算法,通过两个大素数生成密钥对,公钥用于加密,私钥用于解密。在Java中,可以使用内置的`KeyPairGenerator`类来生成RSA密钥对,并结合Base64编码进行存储和传输。这个过程的安全性和...

    支付宝密钥(公钥 私钥)生成工具

    密钥对,包括公钥和私钥,是保障信息安全传输的核心技术之一。本文将深入探讨支付宝密钥生成工具及其在支付宝应用中的作用。 首先,让我们了解什么是密钥对。在公钥密码学中,密钥对是由一对数学上相关联的密钥组成...

    openssl SM2 密钥解析出公钥和私钥

    openssl 中把pem格式的SM2密钥,解析成EC_KEY格式的key,然后解析出key中公钥和私钥

    私钥狩猎碰撞工具

    而这个"最新版高效率密钥碰撞器"可能是一种帮助用户测试其私钥是否已遭碰撞的工具,或者能辅助开发者在算法设计阶段检验密钥生成过程的正确性和安全性。 私钥碰撞工具的工作原理可能基于哈希函数。哈希函数可以将...

    对密钥,密钥对,公钥,证书,私钥,jks,keystore,truststore,cer,pfx

    密钥、密钥对、公钥、证书、、私钥、jks、keystore、truststore、cer、pfx 等概念是信息安全领域中密钥管理和加密技术的重要组成部分。下面对这些概念进行详细的解释和说明: 1. 密钥:指的是公钥和私钥的统称。...

    RSA密钥格式转换 .net和java格式的私钥公钥相互转换

    应用场景用于当你使用的是.net技术需要调用对方的接口时,但对方使用的是java语言时需要把对方提供的RSA私钥或者RSA公钥进行转换成.net格式进行使用。否则可能会出现解密失败的情况出现,相反就是你是java技术需要...

    RSA生成公钥私钥和使用公钥私钥加密解密demo

    生成的密钥对通常包含两个文件:一个包含公钥(通常以.pem或.crt格式),另一个包含私钥(可能为.pem或.key)。这些文件可以被存储和传输,供后续的加密和解密使用。 3. **公钥加密**: 使用公钥进行加密的过程是...

    基于.net framework4的RSA密钥生成和加密解密,包括私钥加密

    后来又传了个新的,叫做“包括私钥加密的RSA密钥生成和加密解密”基于.net Framework 4编,能够生成公钥私钥,直观看到(e,n)和(d,n),能够进行文本及文件加密解密(相关函数输入输出均为byte[],非常好用),...

    C# .net版 RSA 公钥加密私钥解密 私钥加密公钥解密

    总的来说,RSA算法在C# .NET中的实现涉及到了密钥对的生成、公钥加密、私钥解密等核心操作,理解这些概念对于开发安全的应用程序至关重要。在实际应用中,还需要考虑数据完整性校验、密钥管理等额外的安全措施。通过...

    RSA生成密钥对、公钥加密和私钥解密

    在"RSA生成密钥对"的过程中,首先需要选择两个大素数p和q,它们的乘积n=p*q就是公钥和私钥的基础。然后计算欧拉函数φ(n)=(p-1)*(q-1),接着选取一个与φ(n)互质的整数e作为公钥的一部分,通常e取为65537,因为它是...

    支付宝密钥生成器(2048位RSA256)

    总结来说,“支付宝密钥生成器(2048位RSA256)”是开发支付宝接口的重要辅助工具,它能便捷地生成符合支付宝安全要求的密钥对,确保交易数据的安全性和完整性。在使用过程中,开发者需要充分理解密钥的作用和管理,...

    Rsa 加密解密,java 私钥 与 .net私钥互转

    总结来说,实现Java和.NET之间的RSA私钥互转需要理解两种平台对私钥的不同表示方式,利用BouncyCastle库进行转换,并确保加密解密操作的正确性。这是一个涉及到多个步骤的技术挑战,但一旦完成,就能在两个平台上...

    RSA算法JAVA公钥加密,C#私钥解密

    非对称加密与对称加密的主要区别在于,它使用两个不同的密钥:一个公钥用于加密,另一个私钥用于解密。RSA的名字来源于它的发明者Ron Rivest、Adi Shamir和Leonard Adleman。 在Java中实现RSA公钥加密,你需要先生...

    Java 公钥和私钥加密解密代码

    本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥和私钥的基本原理。在非对称加密算法中,每一对密钥由一个公钥和一个私钥组成。公钥是公开的,可以被...

    Linux免密登入 使用公钥+私钥:MobaXterm设置无密码登录

    密钥对是由一对公钥和私钥组成的,它们在数字加密领域扮演着重要的角色。当首次尝试进行无密码登录时,需要生成这对密钥。一旦生成,这些密钥可以被反复使用,无需每次都重新生成。 - **私钥**:类似于门的钥匙,...

    通过RSA证书提取XML/PEM公钥私钥

    确保正确处理私钥,并遵守所有相关的法规和最佳实践,例如,不要在不安全的环境中暴露私钥,定期更换密钥,以及遵循数据加密标准。 总结来说,"RSASecretKeyExtractor"是一个工具,它能帮助用户从PFX证书中提取并...

    证书和私钥生成demo-(C++)VS开发

    1. **生成RSA密钥对**:首先,我们需要生成一对RSA密钥,这包括一个公钥和一个私钥。在C++代码中,这通常通过调用OpenSSL的`RSA_generate_key_ex`函数实现,指定所需的密钥长度(如2048位)。 2. **创建X.509证书...

    获取RSA公钥+私钥

    RSA的安全性与密钥长度有关,通常建议使用至少2048位的长度。 ```java keyGen.initialize(2048); ``` 3. **生成KeyPair**:通过调用`generateKeyPair()`方法,我们可以得到一个包含公钥和私钥的KeyPair对象。 ```...

    pvk(证书私钥转换工具).zip

    `pvk(证书私钥转换工具).zip` 文件包含的工具主要用于处理与证书相关的私钥操作,特别是转换私钥格式。这个压缩包中包含两个文件:`pvk.exe` 和 `README.txt`。 `pvk.exe` 是一个可执行文件,它是由Visual C++或C#...

    基于.net的RSA私钥加密 公钥解密的源码

    生成的密钥可以通过ToXmlString(true)和ToXmlString(false)分别获取XML格式的私钥和公钥。 2. **保存和加载密钥**: 可以将这些XML字符串保存到文件或数据库中,需要时再加载回来。使用RSACryptoServiceProvider的...

Global site tag (gtag.js) - Google Analytics