c# - AES 256 加密 : public and private key how can I generate and use it . 网络

标签 c# java .net vb.net aes

<分区>

关于 AES 256 加密:

  • 公钥和私钥是什么?
  • 如何生成这两个 key ?
  • 我如何使用公众来加密数据?
  • 如何使用私有(private)解密数据?

最佳答案

在 .Net 中,您可以像这样创建 key 对:

public static Tuple<string, string> CreateKeyPair()
{
    CspParameters cspParams = new CspParameters { ProviderType = 1 };

    RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(1024, cspParams);

    string publicKey = Convert.ToBase64String(rsaProvider.ExportCspBlob(false));
    string privateKey = Convert.ToBase64String(rsaProvider.ExportCspBlob(true));

    return new Tuple<string, string>(privateKey, publicKey);
}

然后您可以使用您的公钥加密消息,如下所示:

public static byte[] Encrypt(string publicKey, string data)
{
    CspParameters cspParams = new CspParameters { ProviderType = 1 };
    RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);

    rsaProvider.ImportCspBlob(Convert.FromBase64String(publicKey));

    byte[] plainBytes = Encoding.UTF8.GetBytes(data);
    byte[] encryptedBytes = rsaProvider.Encrypt(plainBytes, false);

    return encryptedBytes;
}

然后使用您的私钥像这样解密:

public static string Decrypt(string privateKey, byte[] encryptedBytes)
{
    CspParameters cspParams = new CspParameters { ProviderType = 1 };
    RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(cspParams);

    rsaProvider.ImportCspBlob(Convert.FromBase64String(privateKey));

    byte[] plainBytes = rsaProvider.Decrypt(encryptedBytes, false);

    string plainText = Encoding.UTF8.GetString(plainBytes, 0, plainBytes.Length);

    return plainText;
}

关于c# - AES 256 加密 : public and private key how can I generate and use it . 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850030/

相关文章:

c# - 使窗体的背景透明

c# - 使用 C# 检测 IE11

c# - DacPac 在导出或导入时排除用户和登录名

java - 抽象类的对象是匿名内部类吗?

java - 通过 TimerTask 从另一个类更新 Activity 的 TextView 的两个选项

.net - 如何平衡和并行处理多个顺序数据流

c# - 是否可以将列表添加到结构中?

c# - 在 C# 中选择数组中的一系列项目

multithreading - 为什么 java.util.HashMap.getEntry 可以阻止我的程序?

c# - 将 DataTable 中列的数据类型从 DateTime 更改为 String