C# 等效于 DecryptByPassPhrase

标签 c# sql encryption

我需要解密一个使用 EncryptByPassPhrase 在数据库上加密的值,但不访问数据库。

如何从密码中获取加密 key ?

我看过

Replicate T-SQL DecryptByPassPhrase in C#

C# Decrypt bytes from SQL Server EncryptByPassPhrase?

我的代码是:

public static string AESDatabaseDecrypt(string encryptedString)
{
    passphrase =     "S0meFakePassPhrase01234!";
    encryptedString = "AQAAAOmuc52dnbVwTqEx1kp+4WhI89LYKHh3jg=="; // temporarily hard coded


    // setup encryption settings to match decryptbypassphrase
    TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();
    provider.Key = UTF8Encoding.UTF8.GetBytes(passphrase).Take(16).ToArray(); // stuck on getting key from passphrase
    provider.KeySize = 128;
    provider.Padding = PaddingMode.Zeros;
    // setup data to be decrypted
    byte[] encryptedStringAsByteArray = Convert.FromBase64String(encryptedString);

    // hack some extra bytes up to a multiple of 8
    encryptedStringAsByteArray = encryptedStringAsByteArray.Concat(new byte[] { byte.MinValue, byte.MinValue, byte.MinValue, byte.MinValue }).ToArray(); // add 4 empty bytes to make 32 bytes
    MemoryStream encryptedStringAsMemoryStream = new MemoryStream(encryptedStringAsByteArray);
    // decrypt
    CryptoStream cryptoStream = new CryptoStream(encryptedStringAsMemoryStream, provider.CreateDecryptor(), CryptoStreamMode.Read);
    // return the result
    StreamReader cryptoStreamReader = new StreamReader(cryptoStream);
    string decryptedString = cryptoStreamReader.ReadToEnd();
}

最佳答案

嗯,我的意思是,让我突然想到的第一件事是您实际上并没有从您的方法中返回值。尝试将 return decryptedString; 添加到末尾,看看会得到什么。

关于C# 等效于 DecryptByPassPhrase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23612644/

相关文章:

php - 从sql数据库生成pdf报告

java - 无法读取 jar 中的图像

python - 如何使用公钥加密?

c# - 为什么 bool 变量总是重置为 false;

c# - 如何访问另一个程序集的 .resx?

c# - 使用 bouncycaSTLe 将加密/解密从 Java 转换为 C#

java - 使用 RSA key 加密 AES key

c# - ASP.net MVC - 导航并突出显示 "current"链接

php - SQL查询问题

php - Mysql 查询产生重复数据