-1

如何对 GUID 执行 AES 加密?

在客户端计算机上,我们将存储一个 GUID 和他们的公钥,我们的内部服务器将拥有私钥和他们的 guid。

这是生成 AES 加密的所有必要输入吗?

4

3 回答 3

8

AES是一种对称加密算法(加密和解密密钥相同)。如果您在谈论公钥和私钥,则需要一种非对称加密算法,例如 RSA。

于 2008-11-05T14:40:20.010 回答
1

您可以加密任何可以表示为字节流的内容。您问题中“配方”中唯一缺少的成分是加密密钥:

void encrypt(char *plaintext, char *key, char *crypt)
{
  // Encrypt plaintext with the key, returning the result in crypt.

}

笔记:

  • 使用 PKI(公钥/私钥),每个参与者通常以安全的方式维护自己的私钥并自由分发其公钥。消息使用收件人的公钥加密并由每个收件人使用私钥解密。从问题的措辞来看,您正在使用此模型并不明显。

  • Jesse 为演示目的提供了一个很好的示例。请记住,您可能不想在生产应用程序中对密钥进行硬编码..

于 2008-11-05T15:14:43.793 回答
0

这是使用 AES (Rijndael) 对字符串数据进行快速加密/解密:

private static readonly byte[] rgbKey = Encoding.UTF8.GetBytes("Ni=9OE=$i+62eprIuDr@ewOu5I9r34Ro"); // change to your own secure key

private static readonly byte[] rgbIv = Encoding.UTF8.GetBytes("to$eO_e!maI*o3ut"); // change to your own secure initialization vector

public static string Encrypt(string originalString)
{
    if (string.IsNullOrEmpty(originalString))
    {
        throw new ArgumentNullException(
           "originalString",
           "The string which needs to be encrypted can not be null.");
    }

    using (var cryptoProvider = new RijndaelManaged())
    using (var memoryStream = new MemoryStream())
    using (var encryptor = cryptoProvider.CreateEncryptor(rgbKey, rgbIv))
    using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
    using (var writer = new StreamWriter(cryptoStream))
    {
        writer.Write(originalString);
        writer.Flush();
        cryptoStream.FlushFinalBlock();
        writer.Flush();
        return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
    }
}

public static string Decrypt(string encryptedString)
{
    if (string.IsNullOrEmpty(encryptedString))
    {
        throw new ArgumentNullException(
           "encryptedString",
           "The string which needs to be decrypted can not be null.");
    }

    using (var cryptoProvider = new RijndaelManaged())
    using (var memoryStream = new MemoryStream(Convert.FromBase64String(encryptedString)))
    using (var decryptor = cryptoProvider.CreateDecryptor(rgbKey, rgbIv))
    using (var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
    using (var reader = new StreamReader(cryptoStream))
    {
        return reader.ReadToEnd();
    }
}
于 2008-11-05T14:49:23.827 回答