C# 如何使用Rfc2898DeriveBytes解密以下函数字符串?

C# 如何使用Rfc2898DeriveBytes解密以下函数字符串?,c#,cryptography,encryption,C#,Cryptography,Encryption,如何解密使用以下函数加密的字符串 private static byte[] salt = new byte[] { 23, 21, 32, 33, 46, 59, 60, 74 }; private static int iterations = 1000; private static int cb = 32; public static string GetEncrypt(string plainText) { Rfc2898DeriveBytes k = new Rfc2898

如何解密使用以下函数加密的字符串

private static byte[] salt = new byte[] { 23, 21, 32, 33, 46, 59, 60, 74 };
private static int iterations = 1000;
private static int cb = 32;

public static string GetEncrypt(string plainText)
{
    Rfc2898DeriveBytes k = new Rfc2898DeriveBytes(plainText, salt, iterations);
    byte[] data = k.GetBytes(cb);
    return Convert.ToBase64String(data);
}

你不能。您误解了
Rfc2898DeriveBytes
的用途。它不是一个可逆的加密算法——它只是一种派生密钥的方法,然后在另一个加密算法中使用

这样做的想法是,您需要一个密码,将它(用salt)转换为加密密钥,然后使用该密钥加密数据(例如,使用
TripleDES

然后,您再次请求密码,使用相同的salt生成相同的密钥,然后您可以使用该密钥对加密数据进行解密


阅读了解更多信息。

你不能。您误解了
Rfc2898DeriveBytes
的用途。它不是一个可逆的加密算法——它只是一种派生密钥的方法,然后在另一个加密算法中使用

这样做的想法是,您需要一个密码,将它(用salt)转换为加密密钥,然后使用该密钥加密数据(例如,使用
TripleDES

然后,您再次请求密码,使用相同的salt生成相同的密钥,然后您可以使用该密钥对加密数据进行解密


阅读了解更多信息。

你好,Jon,谢谢你的回复。如果可以的话,你能给我举个例子吗?因为我对密码学不太了解。@TusharMaru:如果你阅读
Rfc2898DeriveBytes
的文档,你能帮我吗?@TusharMaru:你找不到什么?课程的文档?只需搜索“msdn Rfc2898DeriveBytes”,您将立即到达那里-示例在底部。好的,我在msdn中得到了它,但是我应该设置什么作为密码参数?正如我在上面方法“GetEncrypt”中的问题,密码参数是纯文本的,但每次都不同,所以我无法解密?嗨,Jon,谢谢你的回答。如果可以的话,你能给我举个例子吗?因为我对密码学不太了解。@TusharMaru:如果你阅读
Rfc2898DeriveBytes
的文档,你能帮我吗?@TusharMaru:你找不到什么?课程的文档?只需搜索“msdn Rfc2898DeriveBytes”,您将立即到达那里-示例在底部。好的,我在msdn中得到了它,但是我应该设置什么作为密码参数?正如我在上面方法“GetEncrypt”中提出的问题,密码参数是纯文本的,但每次都不同,所以我无法进行解密?作为旁注:常量不是合适的salt。每个键的派生都应该有不同的盐。作为旁注:常数不是合适的盐。每个键派生的salt应该不同。