我有以下問題:通過密鑰解密不工作ASP.NET sql命令
我已經通過使用對稱密鑰在我的SQL數據庫中加密了一列。現在我已經在數據庫中的加密值,當我開關鍵和執行查詢:
SELECT Convert(varchar, DECRYPTBYKEY(ColumnName)) as ClientSecret
FROM dbo.Sample
在Management Studio中的查詢編輯器它是確定並返回解密值。
但是,當我嘗試執行與我的ASP.NET應用程序中的SqlCommand
相同的操作時,它將返回null。
代碼:
string query = "SELECT Convert(varchar, DECRYPTBYKEY(ColumnName)) as ClientSecret FROM dbo.Sample";
var con = ConfigurationManager.ConnectionStrings["connectionName"].ConnectionString;
using (SqlConnection connection = new SqlConnection(con))
{
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
//the value of client secret here is null
var readerTest = reader["ClientSecret"];
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
}
我的問題有以下幾點:
首先,爲什麼不起作用?
其次,有沒有更好的方法通過使用它的加密算法來解密應用程序中列的值(而不是通過要求服務器去做)?
我認爲當您從應用程序運行它時,您需要將該鍵作爲命令的一部分來打開。你嘗試過嗎? – tattarrattat
是的。我試過了。 – StefanL19