网站首页 > 币百科 >

公钥加密和私钥加密的区别[是加密公钥还是私钥]

2023-07-07 08:16:57 币百科 阅读 0

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

本文讲述公钥加密和私钥加密的区别,以及加密对应公钥还是私钥的知识点,致力于为用户带来全面可靠的币圈资讯,希望对你有所帮助!

公钥和私钥或非对称密钥和对称密钥是密码系统的两种方式。私钥系统是指加解密密钥相同或容易被导出,所以加解密密钥是保密的。公钥体制是指加解密密钥不能相互推导,公钥是公开的,私钥是保密的。

从上面的定义可以看出,公钥和私钥是两种不同的密码系统,而不是两种不同的应用或两种不同的密钥。因此,公钥和私钥都可以用于加密和签名应用程序。

如果单方面使用非对称加密算法,实际上有两种方式,目的不同。

第一种是签名,使用私钥加密和公钥解密。它用于所有公钥所有者验证私钥所有者的身份,并防止私钥所有者发布的内容被篡改。但是,它并不用于确保内容不会被他人获取。

第二种是加密,使用公钥加密和私钥解密向公钥所有者发布信息。这些信息可能被别人篡改,但别人无法获取。

如果甲方要发送一个安全保密的数据给乙方,那么甲乙双方应该各有一个私钥。甲方应与B'方对该数据进行加密;的公钥,然后用自己的私钥对这个加密的数据进行加密,最后发送给乙方,这样就保证了内容不会被读取或篡改。

公钥加密

私钥

的解密。

It';这只是两个算法,不是密码。在向

服务器发送由公钥加密的一串字符之后,他通过私钥将该串字符恢复为您的原始输入

原始数据

(1)对称加密

对称加密是最快最简单的加密方法。加密和解密使用相同的密钥,在密码学中称为对称加密算法。由于对称加密的高效率,因此有许多算法。因此它被广泛应用于许多加密协议的核心。

对称加密通常使用相对较小的密钥,一般小于256位。因为密钥越大,加密越强,但是加密和解密的过程越慢。如果你只用1位作为这个密钥,那么黑客可以尝试先用0解密,如果不行再用1解';t工作;但是如果你的密钥是1MB,黑客可能永远破解不了,但是加密和解密的过程需要很长时间。密钥的大小要兼顾安全性和效率。,是一种取舍。2000年10月2日,theNationalInstituteofStandardsandTechnology(NIST-NIST)choseRindalealgorithmasthenewadvancedencryptionstandard(AES-AdvancedEncryptionStandard)..ThenetworkcontainsRijndaelalgorithm,andtheclassnameisRijndaelManaged.Hereisanexampleof

encryptionprocess:

privatestringmyData="hello

私有字符串我的密码="芝麻开门

私有字节[]密文;

私有字节[]salt={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x5,0x4,0x3,0x2,0x1,0x0};

privatevoidmnussymmetricencryption_Click(对象发送方,路由事件参数e)

{

varkey=newRFC2898derivebytes(我的密码,盐);

//加密数据

var算法=newRijndaelManaged();

算法。钥匙=钥匙.GetBytes(16);

算法IV=键.GetBytes(16);

变量源字节=新系统正文。UnicodeEncoding().GetBytes(我的数据);

使用(varsourcestream=新内存流(源字节))

使用(vardestinationstream=newmemorystream())

使用(varcrypto=newCryptoStream(源文件,算法.CreateEncryptor(),CryptoStreamMode.阅读))

{

移动字节(加密,目的流);

密文=目的地流.toarray();

}

消息框.显示(字符串格式("数据:{0}{1}加密和编码:{2}",我的数据,环境.换行符,转换ToBase64String(密文)));

}

私有空移动字节(流源,流目标)

{

byte[]bytes=newbyte[2048];

VariableCount=Source.Read(Bytes,0,Bytes.Length);

while(0!=count)

{

dest.写(字节,0,计数);

Count=Source.Read(Bytes,0,Bytes.Length);

}

}

Decryptionprocess:

privatevoidmnussymmetricdecryption_Click(对象发送方,路由事件参数e)

{

如果(密文==null)

{

MessageBox.显示("先加密数据!");

返回;

}

varkey=newRFC2898derivebytes(我的密码,盐);

//Attempttodecrypt,thusshowingthatitcangobackandforth.

var算法=newRijndaelManaged();

算法。钥匙=钥匙.GetBytes(16);

算法IV=键.GetBytes(16);

使用(var源流=新内存流(密文))

使用(vardestinationstream=newmemorystream())

使用(varcrypto=newCryptoStream(源文件,算法.CreateDecryptor(),CryptoStreamMode.阅读))

{

移动字节(加密,目的流);

var解密字节=目标流.toarray();

vardecryptedmessage=newunicodeencoding().GetString(

decryptedbytes);(XY002)

消息框。show(decryptedmessage);

}

}

换句话说,对称加密的一个主要缺点是密钥的管理和分发。如何将密钥发送给需要解密你消息的人,是个问题。在发送密钥的过程中,存在着密钥被黑客截获的巨大风险。现实中通常的做法是将对称加密密钥进行非对称加密,然后传输给需要的人。

(2)非对称密码学

1976年,美国学者Dime和Henman提出了一种新的密钥交换协议,解决了公开信息传输和密钥管理的问题。公钥系统允许在不安全介质上的通信双方交换信息并安全地达成一致的密钥。与对称加密算法相比,这种方法也称为非对称加密算法。

非对称加密为数据加密和解密提供了一种非常安全的方法,它使用一对密钥,公钥和私钥。私钥只能由一方安全保管,不能泄露。并且公钥可以被发送给请求它的任何人。非对称加密使用其中一个密钥进行加密,而解密需要另一个密钥。比如,你向银行要一个公钥,银行会发给你,你用它来加密消息。那么只有私钥的持有者——银行才能解密你的消息。与对称加密不同,银行不需要通过网络发送私钥,安全性大大提高。

目前最常用的非对称加密算法是RSA算法。它是由Rivest,Shamir和Adleman在1978年发明的,当时他们都在麻省理工学院。中还有RSA算法。NET,请看下面的例子:

加密过程:

privatebyte[]RSAciphertext;

privatevoidmnuAsymmetricEncryption_Click(对象发送方,路由事件参数e)

{

varRSA=1;

//加密数据varcspParms=新CSP参数(RSA);

cspParms.Flags=CspProviderFlags.使用使用机器密钥库

cspParms.KeyContainerName="我的钥匙"

var算法=newRSACryptoServiceProvider(CSPparms);

var源字节=新的unicode编码().GetBytes(我的数据);

RSA密文=算法Encrypt(sourceBytes,true);

messagebox.Display(string.Format(_"Data:{0}{1}Encryptionandcoding:{2}"

Mydata,environment.Linefeed,

conversion.Tobase64string(RSAciphertext));

}

Decryptionprocess:

privatevoidmnuasymmetricdecryption_Click(对象发送方,路由事件参数e)

{

if(RSAcipher==null)

{

MessageBox.显示("先加密!");

返回;

}

varRSA=1;

//解密数据varcspParms=新CSP参数(RSA);

cspParms.Flags=CspProviderFlags.使用使用机器密钥库

cspParms.KeyContainerName="我的钥匙"

var算法=newRSACryptoServiceProvider(CSPparms);

var未加密=算法。解密(RSA密文,真);

messagebox.Show(newUnicodeEncoding().GetString(unencrypted));

}

Althoughasymmetricencryptionisverysecure,但是相对于对称加密来说,它是非常慢的,所以我们还是需要使用对称加密来传输消息,但是对称加密使用的密钥可以通过非对称加密发送出去。为了解释这个过程,请看下面的例子:

(1)Alice需要在银行进行交易';她的浏览器老师创建了一个随机数作为对称密钥。

(2)爱丽丝';的浏览器向银行请求公钥';的网站。

(3)银行将公钥发送给爱丽丝。

(4)爱丽丝';的浏览器使用银行';的公钥来加密她的对称密钥。

(5)爱丽丝';的浏览器将加密的对称密钥发送给银行。

(6)银行用私钥解密得到Alice的对称密钥';的浏览器。

(7)Alice和银行可以使用对称密钥对通信内容进行加密和解密。

(3)摘要

(1)对称加密加密和解密使用同一个密钥,所以速度高,但由于密钥需要在网络上传输,安全性不高。

(2)非对称加密使用一对密钥,一个公钥一个私钥,安全性高,但加解密速度慢。。

(3)解决方法是用非对称加密公钥加密对称加密密钥,然后发送出去。接收方用私钥对其进行解密,获得对称加密密钥,然后双方就可以使用对称加密相互通信了。

都看过了吗??相信现在你对公钥加密和私钥加密的区别已经有了初步的了解!也可以收集页面获取更多关于加密是公钥还是私钥的知识!区块链,虚拟货币,我们是认真的!

相关内容

公钥加密和私钥加密的区别[是加密公钥还是私钥]文档下载.: PDF DOC TXT

猜你喜欢