Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption AES加密,示例代码_Encryption_Aes - Fatal编程技术网

Encryption AES加密,示例代码

Encryption AES加密,示例代码,encryption,aes,Encryption,Aes,如何对GUID执行AES加密 在客户端计算机上,我们将存储GUID及其公钥,而我们的内部服务器将具有私钥及其GUID 这是生成AES加密的所有必要输入吗?是对称加密算法,加密和解密密钥相同。如果您谈论的是公钥和私钥,那么您需要诸如RSA之类的密钥。这里有一个使用AES Rijndael对字符串数据进行快速加密/解密的方法: private static readonly byte[] rgbKey = Encoding.UTF8.GetBytes("Ni=9OE=$i+62eprIuDr@ewO

如何对GUID执行AES加密

在客户端计算机上,我们将存储GUID及其公钥,而我们的内部服务器将具有私钥及其GUID


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

是对称加密算法,加密和解密密钥相同。如果您谈论的是公钥和私钥,那么您需要诸如RSA之类的密钥。

这里有一个使用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();
    }
}

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

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

}
注:

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

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


我认为他正在使用PKI进行客户机-服务器交互,需要存储相关的公钥和私钥。虽然在这种情况下并不完全是标准做法,但AES是保护PKI密钥的合理方法。默认密码模式是什么?密码块链接。据我所知,这是所有Symmetrialgorithm子体的默认值。同意-如果您的代码离开了安全边界,即托管服务器,您应该考虑公钥基础结构解决方案。如果它被完全包含,请将您的密钥存储在数据库中,这样,如果带有代码的服务器被破坏,您仍然处于安全状态。但您不想处于安全状态-这就是我们首先加密的原因!:-