2
|
Daren Thomas · 技术社区 · 15 年前 |
1
0
不在.NET中。 在许多传统的公钥加密算法(如RSA)中,您可以通过两种方式进行加密和解密,通常一种方式称为“加密”,另一种称为“签名”,即使您最终得到的是两种方式的加密版本。 然而,在.NET中,RSA的实现已经被破坏了,当签名只会生成输入的摘要,而不是完整处理的信息。 对于RSA可以做什么和不能做什么,似乎有一些分歧,所以让我把我的答案编辑得更具体一些。 我说的是RSA数学,不是任何特定的RSA实现。 RSA Math允许您对这两个密钥(私有或公共)中的任何一个进行编码,并且编码的数据只能用这两个密钥中的另一个进行解码。 通常,您使用公钥进行编码,对信息进行加密,然后使用私钥对其进行解码,对信息进行解密。或者,您获取信息的散列,用私钥对其进行编码,对散列进行签名,然后用公钥对散列进行解码,以便比较和验证签名。 典型的实现不允许只通过散列数据来对数据从私有到公共进行完全编码,但是 RSA背后的数学完全允许 . |
2
1
无法使用公钥解密。这样,“公众”的全部观点就会消失。 (但是,您可以使用私钥对某个内容进行签名,然后使用公钥验证签名。这就是框架使用键的目的——程序集已签名,公钥用于验证签名。) |
3
1
这可以使用signedXML完成。 http://msdn.microsoft.com/en-us/library/ms229745.aspx . 在较低的级别上,您可以探测使用rsapkcs1签名格式设置器和rsapkcs1签名格式。这些方法的工作原理是加密数据的散列,然后将数据与另一端的(解密的)散列进行比较。我相信使用散列是因为私钥加密只能处理小数据。不确定是否要重用程序集公钥,如果它导致了问题,只需使用单独的密钥对。 警告的话,看看这个,因为这些类可能导致20秒的挂断! http://www.pcreview.co.uk/forums/thread-3428177.php 这种方法易受使用reflexil篡改的签名验证代码的攻击,但这是另一回事。 我写了以下内容,但我认为你已经得到了:你不是真的试图加密或隐藏用户的数据,你想阻止他们创建或篡改许可证。可以使用公钥-私钥加密算法来实现这一点,这是正确的。这被称为 签署 使用私钥(服务器端许可证生成)。以及使用公共密钥验证签名(应用程序中的许可证检查)。我提到这个术语是因为它有助于研究。 |
4
0
在RSA中,公钥用于加密,私钥用于解密。您不能使用公钥解密任何内容… |
5
0
在RSA中,公钥和私钥之间唯一的实际区别是您对哪个密钥保密。 因此,您可以使用公钥作为加密密钥并使用私钥进行解密,或者使用私钥作为加密密钥并使用公钥进行解密。 用私钥加密用于数字签名(任何人都可以用公钥解码)。 但正如@lasse v.karlsen指出的,.net可能会使它比应该的更困难… |
6
-1
我认为这两个方向都可以用public加密,用private解密,用private密钥加密。第二个问题是数字签名的工作方式。 |
7
-1
警告!这个答案是错误的,但我还是会把它留在这里,因为所附的一系列评论是,我认为其他人有足够的兴趣保留这个答案。好吧,这让我看起来像个白痴,但这对我来说并不是什么新鲜事;)按你的意愿投票。 公钥可用于:
它不能用来解密要用私钥加密的内容。因此,公钥/私钥系统被称为非对称系统。 |
YungOne · 如何将RSA私钥转换为pem 2 年前 |
Teodor Vecerdi · 仅使用n e和c的RSA解密 6 年前 |
Questioner · JAVA中的签名验证与签名长度 6 年前 |
Aravind S · 如何在Java中验证公钥和私钥对 6 年前 |
psy21d · RSA私钥加密QT C++[关闭] 6 年前 |
jakzr · R中的RSA密钥和PKI包存储在哪里? 7 年前 |