`
yanglu0203
  • 浏览: 1281 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

公钥和私钥加密简介

阅读更多

 密码学中要使用Key,而在公钥密码学中,有两个Key,一个公钥PK(Public Key),一个私钥SK(Secret Key),其中公钥PK公开,任何人都可以查到,而私钥SK保密,理论上只应该有你一个人知道。这一点是与分组密码算法(DES,AES)不同的,因为在分组密码算法中,只有一个KEY,且是在通信双方共享的,并且需要保密。下面以公钥密码算法RSA为例,来讲一讲在公钥密码学,加密与签名时,key的选择问题。

    首先要说一说通信,通信自然要涉及通信双方,当然,你也可以自己和自己通信。密码学的大师给了通信双方两个好听的名字A(lice)B(ob)。下面约定一下PK(A),PK(B)分别代表AliceBob的公钥,是完全公开的,任何人都可以查到;SK(A)Alice的私钥,只有Alice自己知道,SK(B)Bob的私钥,只有Bob一个人知道。下面从Bob的角度来讨论。

    加密:

    加密,为什么要加密?因为通信的双方使用的是公开的信道,而信道上是可能有偷听者的,如果使用明文传输消息,即不加密,那么偷听者就可以知道消息的内容了,如果你传输的是什么**消息的话,你就悲剧了。所以为防止消息被不应该知道的人知道,传输时要加密。

在公钥密码学中,一个消息M,在key1的控制下,经过密码算法,得到密文C,是为加密;而密文C,在另一个Key2的控制下,经过密码算法,可以得到对应的明文M,是为解密。其中一个是公钥PK,一个是私钥SK,这是与分组密码不同的。下面来说Bob要传输消息给Alice,该使用那个Key。这里使用枚举,这个办法很好用。总共用四个key

 

1)使用PK(B)吗(自己的公钥)?这个,来分析分析。使用PK(B)加密的消息,只能使用对于的SK(B)来解密,而SK(B)只有你自己知道,Alice不知道,偷听者也不知道。使用这个Key的效果最好,别的人都不能知道消息的内容,偷听者也拿它没办法,但是,通信的另一方Alice也不知道消息的内容了,这样的通信就没有意义了。所以,否定掉。

 

    2)使用SK(B)吗(自己的私钥)?我们来看看,使用SK(B)加密的消息,要使用PK(B)来加密。而PK(B)是公开的,Alice知道,恩,Alice可以解密消息了,这个可以吧!这个真的可以吗?正是因为PK(B)是公开的,Alice知道,偷听者也知道,所以Alice能解密,偷听者也能解密,所以根本就没有保密性。和明文传输没多大的差别了。这个一个悲剧的选择。Pass掉。

 

3)使用SK(A)吗(对方的私钥)?SK(A)Alice的私钥,只有Alice知道,Bob不知道,这个不行。假设Alice将私钥偷偷告诉了你,这样你就可以使用了吧。原理和结局同2中的分析。同样……

 

    4)使用PK(A)吗(对方的公钥)?排除法告诉我们,只有这个可以选了,那就选它吧。原理什么的就不用讲了吧,大家也没兴趣的。不行,老夫子教导我们,知其然必知其所以然。我们要知道原理。好吧,讲一讲。使用PK(A)加密的消息,要使用SK(A)来解密,而SK(A)对方是知道的,所以消息是可以解密的;而又因为SK(A)只有Alice知道,别的人包括偷听者是不知道的,所以消息的保密性是可以保证的。

  

 

    签名:

    签名,现实生活中,我们可以使用自己的笔迹来签名的。而电子世界呢?签名,这个是公钥密码学提供的而分组密码是无法与他比的特性。签名,为什么要签名?举个例子,假如你发送一条消息给银行,从你的账号中转1亿出去,银行执行了这条消息,转了账,事后,你跟银行说,你没有转过账,要让银行赔偿,如果银行拿不出证据,那银行就悲剧了、破产了,而银行是可以拿出证据的,证据就在那条消息中,因为你对它签名了,而签名在法律上是有效的证据的。好吧。那么,Bob要对消息签名,他该使用哪个key?枚举法再次闪亮登场……

 

1)使用PK(A)吗(对方的公钥)?假设可以的话,由于PK(A)是公开的,那么任何都是可以伪造你的签名的,你的银行卡就爆了。。。

 

2)使用SK(A)吗(对方是私钥)?同样这个你是不知道的。就是对方告诉了你,还是有问题的,因为这个和你的另一个key不匹配,签名是不能验证的,这个问题同样出现在1中。所以,不妥。。。

 

3)使用PK(B)吗(自己的公钥)?同样有问题,第一,原理同1,由于是公开的,任何人都可以伪造,银行卡再次爆掉了;第二,原理同2,要验证,就需要使用你的另一个key,即你的私钥,而这个只有你自己知道,所以签名无法验证。这又是一个失败的例子。。。

 

4)私钥SK(B)吗(自己的私钥)?还是说说原理吧。签名要使用唯一能确认是你的东西来签名,譬如笔迹。因为SK(B)只有你自己知道,所以满足要求的;其次,使用SK(B)签名的东西,是可以用PK(B)验证的,因为它是公开的。所以也满足要求。

 

     在公钥密码学中,加密使用对方的公钥,签名使用自己的私钥。

  

分享到:
评论

相关推荐

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

    在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...

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

    本教程主要讲解如何在C# .NET环境中使用RSA进行公钥加密和私钥解密,以及私钥加密和公钥解密的操作。 首先,让我们了解RSA的基本原理。RSA算法基于两个大素数的乘积,这个乘积作为公钥,而这两个大素数作为私钥。...

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

    本示例提供了一个RSA加密工具类,用于生成公钥和私钥,并使用它们进行加密和解密操作,这对于保护数据库中的敏感信息,如密码,是非常必要的。 1. **RSA算法原理**: RSA算法基于数论中的大数因子分解难题。其基本...

    VC++写的公钥和私钥加密算法

    在IT领域,尤其是在网络安全和数据保护方面,公钥和私钥加密算法扮演着至关重要的角色。这个名为"VC++写的公钥和私钥加密算法"的项目,显然是一个使用Microsoft Visual C++编写的示例,旨在帮助初学者理解这种加密...

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

    在现代信息安全领域,公钥加密私钥解密及私钥加密后由公钥解密或验证的技术被广泛应用于数据保护、身份验证和安全通信等多个方面。下面将详细阐述这两种技术的基本原理及其应用场景。 #### 一、公钥加密私钥解密 ...

    数字证书原理,公钥私钥加密原理

    数字证书和公钥私钥加密是当今网络安全中的基础元素。它们在保护数据传输、验证身份、以及确保信息交流的完整性和机密性方面发挥着关键作用。以下是对数字证书原理和公钥私钥加密原理的详细解读。 数字证书是一种...

    java中使用公钥加密私钥解密原理实现license控制

    Java 中使用公钥加密私钥解密原理实现 License 控制 Java 中使用公钥加密私钥解密原理实现 License 控制是指在 Java 应用程序中使用公钥加密、私钥解密机制来实现 License 文件的控制。这种机制可以用来限制系统的...

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

    RSA算法是一种非对称加密算法,它在信息...综上所述,C++实现RSA公钥私钥加密算法涉及了大数运算、素数检测、欧拉函数、模逆运算等多个数学和密码学概念。理解并实现这一算法有助于深入理解信息安全基础和加密技术。

    Java公钥加密私钥解密.rar

    在IT领域,尤其是在网络安全和数据传输中,公钥加密和私钥解密是一种常见的安全机制。这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能...

    RSA.zip_C++ rsa私钥加密_rsa加密解密_公钥私钥_私钥加密

    在给定的"RSA.zip"压缩包中,可能包含了C++代码示例,用于演示如何使用RSA算法进行加密和解密操作,以及如何生成和管理公钥私钥对。文件名"RSA"可能是源代码文件或执行程序。通过学习和理解这些代码,开发者可以更好...

    公钥和私钥的输入程序

    在IT领域,尤其是在网络安全和加密技术中,公钥和私钥是至关重要的概念。公钥和私钥是一种非对称加密技术的基础,广泛应用于数据传输、数字签名和身份验证等场景。RSA是一种著名的公钥加密算法,由Ron Rivest、Adi ...

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

    "Go-gorsa"是一个专门为Go语言设计的安全库,它专注于RSA(Rivest-Shamir-Adleman)加密算法的实现,允许用户进行公钥加密和私钥解密,以及公钥解密和私钥加密的操作。这一特性使得gorsa在确保信息安全方面具有很高...

    支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密

    另一方面,“支持rsa公钥解密私钥加密”则涉及到了数字签名的概念。在这种情况下,私钥用于加密(或更准确地说,是“签名”)数据,而公钥用于验证签名。这是因为在RSA中,私钥进行的操作(如签名)是不可逆的,只能...

    数字证书原理,公钥私钥加密原理1

    【数字证书原理与公钥私钥加密概述】 ...公钥私钥加密和数字证书是网络安全的基石,它们为网络通信提供了强大的安全保障。理解这些基本概念有助于我们更好地理解和应对网络安全挑战,保护个人和企业的信息安全。

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

    在这个示例中,"RSA加密"的压缩包可能包含了Java和C#的完整源代码,用于演示如何在两者之间实现RSA公钥加密和私钥解密的过程。开发者可以通过运行这些示例代码,理解并应用RSA加密解密技术到自己的项目中。

    RSA公钥解密私钥加密c#实例

    之前涉及到的RSA加解密都是用公钥加密私钥解密,看过此文档后你会发现原来公钥也可以用来解密啦,不同于数字签名哦

    C#RSA私钥加密公钥解密

    私钥加密和公钥解密是RSA算法的核心特性,允许发送者使用接收者的公钥来加密数据,而只有持有对应私钥的接收者才能解密。在这个特定的案例中,`MyRSA.cs` 文件提供了一个实现,它使用了 `System.Numerics.BigInteger...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    支付宝公钥、私钥的设置.docx

    在支付宝的场景下,公钥和私钥主要用于商户与支付宝服务器之间的数据加密和验证。当用户在商户网站上完成支付操作后,商户需要通过API向支付宝发送请求,此时就需要使用私钥对请求内容进行签名,以证明请求来源的...

    使用公钥加密私钥解密原理

    在公钥加密和私钥解密的机制下,数据的加密和解密使用的是不同的密钥,从而提供了更高的安全性和隐私保护。 公钥加密的基本原理源于两个数学难题,如大数因子分解(RSA算法)或离散对数问题(DSA、ECC算法)。简单...

Global site tag (gtag.js) - Google Analytics