非对称加密RSA的应用及在C#中的实现
2010-09-30 22:47:06 来源:WEB开发网核心提示: 非对称加密的执行效率要远低于对称加密,所以我们不会对一个大的文件或数据使用非对称加密算法,非对称加密RSA的应用及在C#中的实现(2),那么我们如何加密一个大的文件呢?通常情况我们可以选择对称加密算法加密文件,然后使用非对称算法加密对称算法的密钥,我们还可以通过验证消息摘要,来确定发送的数据是否
非对称加密的执行效率要远低于对称加密,所以我们不会对一个大的文件或数据使用非对称加密算法。那么我们如何加密一个大的文件呢?通常情况我们可以选择对称加密算法加密文件,然后使用非对称算法加密对称算法的密钥,这样就保证了对称算法密钥传递的安全性。
非对称加密的另外一个用途就是用来进行数字签名。
什么是数字签名?数字签名同我们在合同上的签字一样,接收方可以用它来证明收到的数据或文件是由你发送的。举个例子:假设发送方需要将一串数据D发送给接收方,那么接收方如何判断数据D是发送方发送的呢?
Step 1:发送方先产生成一对密钥,并将公钥公开给接收方;
Step 2:发送方将数据D用私钥进行加密得到密文M,然后将数据D和密文M一起发送给接收方;
Step 3:接收方得到数据D和密文M后,用公钥将密文M解密得到d;
Step 4:比较D和d,相等则证明D是由发送方发送的。
在实际的操作中,我们并不会直接用私钥去加密要发送的数据或文件,这是因为非对称加密的算法非常耗时并且密文的长度要大于明文的长度,直接加密系统的开销非常大。那么如何实解决这个问题呢?
首先,我们需要了解另外一个概念:消息摘要。所谓的消息摘要就是通过一种单向算法计算出来的唯一对应一个文件或数据的固定长度的值,也被称作数字摘要。根据不同的算法,消息摘要的长度一般为128位或160位。常用的消息摘要的算法有MD5和SHA1。一个文件的消息摘要就同一个人的指纹一样,它可以唯一代表这个文件,如果这个文件被修改了,那么它的消息摘要也一定会发生变化,所以,我们可以通过对一个文件的消息摘要进行签名来代替对它本身进行签名。并且,我们还可以通过验证消息摘要,来确定发送的数据是否完整或曾经被修改过。这样,上面的例子大致可以变为下面这样:
更多精彩
赞助商链接