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

公钥加密(不对称加密)

阅读更多

公 钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签 名的数据只能用公钥验证。公钥可以提供给任何人;公钥用于对要发送到私钥持有者的数据进行加密。两个密钥对于通信会话都是唯一的。公钥加密算法也称为不对 称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。

公钥加密算法使用固定的缓冲区大小,而私钥加密算法使用长度可变的缓冲区。公钥算法无法像私钥算法那样将数据链接起来成为流,原因是它只可以加密少量数据。因此,不对称操作不使用与对称操作相同的流模型。

双 方(小红和小明)可以按照下列方式使用公钥加密。首先,小红生成一个公钥/私钥对。如果小明想要给小红发送一条加密的消息,他将向她索要她的公钥。小红通 过不安全的网络将她的公钥发送给小明,小明接着使用该密钥加密消息。(如果小明在不安全的信道如公共网络上收到小红的密钥,则小明必须同小红验证他具有她 的公钥的正确副本。)小明将加密的消息发送给小红,而小红使用她的私钥解密该消息。

但 是,在传输小红的公钥期间,未经授权的代理可能截获该密钥。而且,同一代理可能截获来自小明的加密消息。但是,该代理无法用公钥解密该消息。该消息只能用 小红的私钥解密,而该私钥没有被传输。小红不使用她的私钥加密给小明的答复消息,原因是任何具有公钥的人都可以解密该消息。如果小红想要将消息发送回小 明,她将向小明索要他的公钥并使用该公钥加密她的消息。然后,小明使用与他相关联的私钥来解密该消息。

在一个实际方案中,小红和小明使用公钥(不对称)加密来传输私(对称)钥,而对他们的会话的其余部分使用私钥加密。

公 钥加密具有更大的密钥空间(或密钥的可能值范围),因此不大容易受到对每个可能密钥都进行尝试的穷举攻击。由于不必保护公钥,因此它易于分发。公钥算法可 用于创建数字签名以验证数据发送方的身份。但是,公钥算法非常慢(与私钥算法相比),不适合用来加密大量数据。公钥算法仅对传输很少量的数据有用。公钥加 密通常用于加密一个私钥算法将要使用的密钥和 IV。传输密钥和 IV 后,会话的其余部分将使用私钥加密。

    .NET 通过抽象基类 (System.Security.Crytography.AsymmetricAlgorithm) 提供下列非对称(公钥/私钥)加密算法:

 DSACryptoServiceProvider

 RSACryptoServiceProvider

分享到:
评论

相关推荐

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

    RSA是一种非对称加密算法,它基于数学难题的大数因子分解,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,因此得名RSA。本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密...

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    数字签名是一种非对称加密的应用,用于验证数据的完整性和发送者的身份。发送者通过自己的私钥对消息的哈希值进行加密,接收者可以使用发送者的公钥来解密这个签名,如果解密后的哈希值与原始消息的哈希值一致,就...

    C#-RSA非对称加密公钥加密.rar

    在实际应用中,非对称加密常用于保护敏感信息,如数字签名、SSL/TLS协议以及在不安全的网络上交换密钥。通过这个实例,开发者可以快速了解并掌握C#中的RSA非对称加密,提高他们的安全性编程能力。

    公钥加密私钥解密&私钥加密公钥解密

    公钥加密私钥解密是基于非对称加密算法的一种实现方式。这种加密方法使用一对密钥——公钥和私钥。其中,公钥可以公开给任何人使用,而私钥则必须保密,只有密钥的所有者才能掌握。具体工作流程如下: 1. **发送方...

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

    此外,需要注意的是,RSA加密不适合对大量数据进行操作,因为其效率相对较低。通常,它用于加密会话密钥或其他对称加密算法的密钥,而大量数据则用对称加密处理,以提高性能。 在这个示例中,"RSA加密"的压缩包可能...

    C# RSA 公钥加密,私钥解密

    在IT领域,尤其是在网络安全和数据保护方面,RSA算法是一种广泛使用的非对称加密技术。本文将深入探讨如何在C#编程环境下,利用RSA算法进行公钥加密和私钥解密,以此来确保数据的安全传输。我们将以Visual Studio ...

    基于RSA的公钥加密 信息安全java实现

    **基于RSA的公钥加密与Java实现** RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于信息安全领域,为数据传输提供安全保护。它的核心特点是拥有两个密钥:公钥和私钥。公钥可以公开,用于加密信息;...

    公钥加密算法RSA(java).rar

    **公钥加密算法RSA在Java中的实现** RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于网络安全领域,如数据加密、数字签名等。其核心概念是基于大数因子分解的困难性,使得只有拥有正确密钥的人才能...

    密码学-7 公钥加密方案(之一 RSA+OAEP)1

    Fujisaki-Okamato和GERM就是这类方案的例子,它们将对称加密的高效性与公钥加密的安全性相结合。 ### IBE加密方案 标识为基础加密(Identity-Based Encryption, IBE)允许使用用户的身份信息(如电子邮件地址)作为...

    云计算中改进概率公钥加密的移动设备数据隐私保护方法.pdf

    传统的加密技术包括对称加密和非对称加密。对称加密算法中,加密和解密使用相同的密钥,例如AES算法;非对称加密算法中,使用一对密钥,即公钥和私钥,如RSA算法。 概率公钥加密(PPKE)是一种相对较新的加密方式,...

    C++实现RSA公钥私钥加密算法

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,如数字签名、数据加密等。该算法基于两个大素数的乘积以及欧拉函数的性质,使得只有拥有特定密钥的人才能对信息进行解密。在这个C++实现中,我们将...

    公钥加密/流加密/摘要 算法

    公钥加密,也称为非对称加密,是一种使用一对密钥进行加密和解密的方法。其中,一把是公开的公钥,另一把是私有的私钥。RSA是最著名的公钥加密算法之一,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。...

    RSA公钥加密RSA公钥加密

    RSA公钥加密是一种广泛应用于网络安全领域的非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这种加密方式基于大整数因子分解的数学难题,使得只有知道特定的私钥才能解密由...

    李煌老师公钥加密算法软件

    公钥加密算法的应用广泛,包括但不限于: - **网络通信安全**:HTTPS协议就利用了公钥加密技术,保证了用户与服务器之间的数据传输安全。 - **数字签名**:发送方可以用私钥对消息进行签名,接收方用公钥验证签名,...

    Java加密算法-公钥加密私钥解密

    公钥加密和私钥解密是一种非对称加密技术,它允许数据在不安全的环境中安全传输。本主题将深入探讨Java如何实现这种机制,以及其在客户端与服务器交互中的应用。 1. **公钥加密原理** 公钥加密是一种双钥加密系统...

    RSA加密 私钥加密公钥解密

    RSA加密是一种非对称加密算法,它基于两个不同的密钥:公钥和私钥。在RSA系统中,信息可以用其中一个密钥加密,然后只能用另一个密钥解密。这种特性使得RSA在信息安全领域中有着广泛的应用,特别是在数据传输、数字...

    Rabin公钥加密解密算法(c语言实现)

    这种算法虽然在理论上有较高的安全性,但由于存在解密时间较长和可能出现的平方根碰撞问题,实际应用中并不多见,更常见的公钥加密算法是RSA。不过,Rabin算法对于理解和研究非对称加密原理仍然具有重要的教学和参考...

    使用公钥加密保护ActiveRecord属性.zip

    公钥加密,也称为非对称加密,涉及到两个密钥:公钥和私钥。公钥可以公开分享,用于加密数据;而私钥必须保密,用于解密由公钥加密的数据。这种机制确保只有持有私钥的接收者才能解密通过公钥加密的信息,从而提供了...

    Go-gorsa支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密

    RSA是一种非对称加密算法,其基本原理是基于大数因子分解的困难性。在RSA中,一对密钥包括公钥和私钥,公钥用于加密,私钥用于解密。这样,只有拥有私钥的一方才能解密由公钥加密的信息,从而保证了数据的安全性。 ...

    常见加密算法方式(对称加密和非对称加密)

    非对称加密算法,又称公钥加密算法,其特点是加密和解密过程使用不同的密钥。通常,每个用户会拥有一对密钥:公钥和私钥。公钥可以公开分享给任何人,而私钥则需要保密。这种机制简化了密钥的分发问题,并且能够实现...

Global site tag (gtag.js) - Google Analytics