moh*_*sti 3 asp.net security cryptography encryption-asymmetric
我是密码学的新手.我读过对称和非对称算法分别使用一个和两个加密密钥.并且这些密钥必须存放在安全的地方.但当我在网上搜索有关如何在asp.net中进行加密的教程时,我发现了一些奇怪的东西!例如本教程 .
加密或解密数据时没有存储或提供的公钥或私钥!我无法理解.
我遇到的另一个问题是,到目前为止我发现的所有教程都是代码,没有任何解释这些代码是什么以及使用的原因.我感谢任何建议的好教程.
来自RSACryptoServiceProvider构造函数:
如果未找到默认密钥,则会创建新密钥.
此构造函数创建适用于加密会话密钥的Exchange密钥对,以便可以安全地存储和与其他用户交换.生成的密钥对应于使用非托管Microsoft Cryptographic API(CAPI)中使用的AT_KEYEXCHANGE值生成的密钥.
所以它只是生成一个新的密钥对,如果它找不到已经创建的密钥对; 您不应该使用除基于会话的数据之外的其他内容.
一点背景(我假设您使用的是Windows),非对称密钥对与证书相关联.这些证书是您用来信任非对称密钥的证书.每个证书都可以由证书颁发机构(发出非对称密钥的权限)签名,如果您信任证书颁发机构,则您信任属于该机构签署的证书的非对称密钥.所有这些证书都存储在"证书存储"中,即"密钥存储"(Java),"密钥环"(Mac).
您可以通过执行查看证书Start > Run > certmgr.msc.您的证书属于个人>证书.如果打开一个,然后转到Certificate Path选项卡,您将看到证书链到证书颁发机构.如果在您的Trusted Root Certification Authorities > Certificates商店中找到属于证书颁发机构的"root"证书,则证书将被视为有效且受信任.
如果要为用户加密某些内容,则应进入其证书存储区,并提取其加密证书.为此,您应该打开"当前用户"密钥存储区,并遍历其中的所有证书,并选择密钥用法为"密钥加密"的密钥存储区,如果不止一个,请询问用户哪个他想用.
如果要使用服务帐户加密某些内容(例如,如果您是Web服务器),则应使用"本地计算机"密钥存储区中的证书,并仅授予您的服务帐户对与证书关联的私钥的读取权限你想用.
这可以使用X509Store Class完成,例如:
X509Store certificateStore = new X509Store("MY", StoreLocation.CurrentUser);
X509Certificate2Collection allCertificates = certificateStore.Certificates;
//Iterate through all certificates
Run Code Online (Sandbox Code Playgroud)
"我的"代表个人证书,其余的可以在这里找到.CurrentUser表示用户键,另一个选项是LocalMachine.
获得要使用的证书后,应使用公钥进行加密,使用私钥进行解密,并使用对称密钥.因此,如果您想要加密大量数据,那么您要做的是:
解密时你应该:
我有一堆代码示例,如果您想看看,请告诉我您需要帮助的部分.
这可能有点令人困惑,所以让我知道你想澄清什么.