数据加密与身份认证(RSA加密算法)
数据加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。
身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。
公钥与私钥
现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。即:这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。
公钥私钥的原则:
一个公钥对应一个私钥,
密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥,必须非常小心保存。
如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密
公钥与私钥的作用:
用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
公开密钥的加密过程(必须两人都有公钥和私钥)
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
Bob将他的公开密钥传送给Alice。
Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
Bob用他的私人密钥解密Alice的消息。
Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。(必须两人都有公钥和私钥)
身份认证过程如下:
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:
Alice用她的私人密钥对文件加密,从而对文件签名。
Alice将签名的文件传送给Bob。
Bob用Alice的公钥解密文件,从而验证签名。
Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
信息签名校验:
比如有一段明文信息从Bob发送到Alice,就是在信息的后面再加上一段内容,可以证明信息没有被修改过。一般是对信息做一个hash计算得到一个hash值,注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后做为一个签名和信息一起发出去。接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改hash值,从而让它们可以相匹配,为了防止这种情况,hash值一般都会加密后(也就是签名,包含在公钥内)再和信息一起发送,以保证这个hash值不被修改。
数字证书
可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。
数字证书原理相关参考资料:
http://www.williamlong.info/archives/837.html
http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html (解释的非常详细,推荐仔细读读!)
http://blog.csdn.net/hwalk/article/details/2143501
相关推荐
RSA加密算法在VBRSA加密算法在VBRSA加密算法在VB
RSA加密算法.ppt
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法...
QT上RSA加密算法实现,附带图形界面,更加直观
本rsa算法是使用Java与javascript加密解密范例代码,该资料从互联网收集,加上了自己的使用体会,如果对你有帮助那是万幸! js加密部分
主要介绍RSA非对称加密算法的由来和应用场景,以及加密原理
RSA加密算法的实现,使用c++语言编程,使用dev c++平台编码,文件为cpp格式。经过反复测试代码正确,可搭配RSA讲解教程一起使用,讲解教程点击我的个人主页即可查看,希望能够对你有帮助,谢谢。
PHP版RSA加密算法 PHP版RSA加密算法 PHP版RSA加密算法
RSA加密算法实验报告.pdf
RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示RSA算法演示
它不仅可以进行加密,还可以用来进行数字签名和身份验证,是公钥 密码体制的代表。 RSA}JI密体制主要基于数论当中的欧拉定理进行一系列的数学变 换,以实现加解密和身份验证。在变换过程中,RSA必需经历大数的 模幂...
rsa数据加密算法的程序实现 可以实现word文档文件的加密解密
rsa加密算法实例
RSA 加密算法详解 RSA 加密算法是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA 以它的三个发明者 Ron Rivest, Adi Shamir, Leonard Adleman 的名字首字母命名,这个算法经受住了多年深入...
RSA加密解密算法源码,功能齐全,没有密码,使用方便,学习用.
RSA加密算法在VB中的实现.可以更好的了解RSA加密算法.
此次任务是通过Crypto模块中提供的RSA加密算法进行RSA的数据加密。 任务 RSA数据加密 任务知识点 RSA简介 Crypto模块使用RSA加密 知识点:RSA数据加密 01 RSA简介 RSA RSA算法是属于非对称加密算法,即加解密的秘钥...
RSA加密算法的C语言实现
本文档是RSA的加密解密算法的实验过程,实现原理,以及RSA实验报告和部分主要的实现算法的代码的附录,本程序基于C语言
rsa加密算法加密与解密过程解析.pdfrsa加密算法加密与解密过程解析.pdfrsa加密算法加密与解密过程解析.pdfrsa加密算法加密与解密过程解析.pdfrsa加密算法加密与解密过程解析.pdfrsa加密算法加密与解密过程解析.pdf