C# 在RSA c中生成不同的密钥#

C# 在RSA c中生成不同的密钥#,c#,cryptography,rsa,C#,Cryptography,Rsa,我想使用rsacyptoserviceprovider生成2对uniq公钥/密钥。这是我的密码 public static byte[] publicKeyAlice, publicKeyBob, privateKeyAlice, privateKeyBob, publicKeyTrent, privateKeyTrent; using (var rsa = new RSACryptoServiceProvider(KEY_SIZE)) { publicKeyAlice = rsa.Ex

我想使用
rsacyptoserviceprovider
生成2对uniq公钥/密钥。这是我的密码

public static byte[] publicKeyAlice, publicKeyBob, privateKeyAlice, privateKeyBob, publicKeyTrent, privateKeyTrent;
using (var rsa = new RSACryptoServiceProvider(KEY_SIZE))
{
    publicKeyAlice = rsa.ExportCspBlob(false);
    privateKeyAlice = rsa.ExportCspBlob(true);
    privateKeyBob = rsa.ExportCspBlob(true);
    publicKeyBob = rsa.ExportCspBlob(false);
}

但是当我看数组
publickeyalis
publicKeyBob
时,它们是相同的。请帮助我使它们不同。

为每个密钥对创建不同的提供者:

using (var rsa = new RSACryptoServiceProvider(KEY_SIZE))
{
    publicKeyAlice = rsa.ExportCspBlob(false);
    privateKeyAlice = rsa.ExportCspBlob(true);
}
using (var rsa = new RSACryptoServiceProvider(KEY_SIZE))
{
    privateKeyBob = rsa.ExportCspBlob(true);
    publicKeyBob = rsa.ExportCspBlob(false);
}

对我有用。你是说对你来说,publicKeyAlice和publicKeyBob是一样的吗?在我看来,你没有两次生成任何东西。导出某些内容并不是生成某些内容。您似乎不了解RSACryptoserviceProvider类,尽管从其名称来看,它听起来像是生成密钥对的服务,但可以将其视为密钥本身。使用其构造函数(已创建的密钥对)创建RSACryptServiceProvider后,ExportCspBlob将仅将已创建的密钥对导出到blob表单中。因此,您需要为每个密钥对构造一个RSACryptServiceProvider。