什么叫公钥?

发布网友 发布时间:2022-04-23 04:36

我来回答

4个回答

懂视网 时间:2022-05-12 03:30

什么是公钥

公钥是密钥对中公开的部分,公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。

密钥是密钥的所有者应该隐藏在公钥密码基础设施上的密钥。在公钥密码系统中,公钥和密钥是成对的,我们假设在将公钥发布给第三方时,私钥应保密。

在公钥密码术出现之前,通常使用公共密钥密码技术,这是因为加密密钥和解密密钥是相同的,通过与通信伙伴共享,加密通信完成。但是,如果在交换密钥的过程中被窃听,则公共密钥加密没有加密的意义。

使用公钥加密,密钥的所有者首先将公钥传递给通信伙伴。通信伙伴使用该公钥加密,并将加密的文档(数据)发送给密钥的所有者,接收加密文档的密钥的所有者用私钥解密文档,解密文档所需的密钥不在通信路径上交换,从而更容易确保安全性。

最广泛使用的公钥加密是RSA加密,在RSA中,公钥和密钥具有相同的结构,并且用一个密钥加密的密钥可以用另一个密钥解密,换句话说,它不仅可以用于使用公钥加密,用密钥解密,还可以用密钥加密并用公钥解密。

数字签名使用了这一特征,除非是拥有与公钥配对的密钥的人,否则无法创建可以使用特定公钥解密的加密文档,以便可以保证密钥的所有者。

但是,应该注意RSA的私钥和公钥永远不是对称关系。可以从私钥创建公钥,但是从公钥创建密钥被认为是非常困难和不可能的,RSA的安全性基于以下事实:很难将大量因素分解,因此有必要延长密钥长度以提高安全性。由于预期将来会发现新的解码算法并提高计算速度,因此密钥长度和算法也会发生变化。

热心网友 时间:2022-05-12 00:38

公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。

热心网友 时间:2022-05-12 01:56

公钥与私钥其实是通过算法得到的一个密钥对,公钥是密钥对中公开的部分,私钥则是非公开的部分,公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。

热心网友 时间:2022-05-12 03:31

使用公钥加密的用户拥有一个私钥和一个公钥,并且他们与其他用户共享公钥。如果您要将一封私有短信发送给您的朋友 John Doe,您可以使用 John Doe 的公钥(您已经将其存储在自已的 keyring 中)加密该消息。John Doe 收到该消息后,只有他可以使用他的私钥对其解密。任何给定用户的公钥和私钥在数学上是不能相关的。对于 PGP 和其他公钥加密方法,不存在从公钥推断某人私钥的方法。

PGP 的附加特性是:私钥的密码实际上不是密码,它是一个密码短语。它可以是整句话,包括标点符号、空格和所有字符样式。

使用基于 PGP 的公钥加密的一种方法是使用 GNU Privacy Guard (GPG)。使用 GPG 加密的任何消息都可以使用 GPG、PGP 或支持任一程序的任何数量的电子邮件客户机插件来解密。在示例中,联机表接受用户输入(包括消息);使用 GPG 为特定的接收方加密消息;然后发送消息。

清单 8. 使用 GPG

<?php

//set up users

$from = "webforms@example.com";

$to = "you@example.com";

//cut the message down to size, remove HTML tags

$messagebody = strip_tags(substr($_POST['msg'],0,5000));

$message_body = escapeshellarg($messagebody);

$gpg_path = '/usr/local/bin/gpg';

$home_dir = '/htdocs/www';

$user_env = 'web';

$cmd = "echo $message_body HOME=$home_dir USER=$user_env $gpg_path" .

"--quiet --no-secmem-warning --encrypt --sign --armor " .

"--recipient $to --local-user $from";

$message_body = `$cmd`;

mail($to,'Message from Web Form', $message_body,"From:$from ");

?>

在此示例中,PHP 调用 /usr/local/bin/gpg(此位置因服务器而异),以便使用发送方的私钥和接收方的公钥加密消息。结果,只有接收方可以解密该消息,并且知道来自发送方的消息。此外,还可以设置 HOME 和 USER 环境变量,以通知 GPG 在何处查找存储这些密钥的 keyring。其他标志的功能如下:

--quiet 和 --no-secmem-warning 抑制来自 GPG 的警告。

--encrypt 执行加密。

--sign 添加签名,以验证发送方的身份。

--armor 产生非二进制的 ASCII 输出,这样,易于通过电子邮件将其发送。

正常情况下,正如前面提到的,机密密钥受密码短语的保护。本特定实例没有使用密码短语,因为在每次表单提交时它都需要手工输入。当然,在下列情况下您还可以选择其他选项:在单独文件中提供短语,或使用它自已的身份验证方案防止表单公用(例如,如果它是一个只能由公司销售代表访问的表单)。

另请注意,除非您正在对允许用户输入电子邮件消息的表使用 SSL,否则键入的任何内容都是明文形式的。换句话说,客户机和服务器之间的任何人都可以看见它。不过,这是另一个主题。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com