私は次の問題があります:キーで復号化がASP.NETのSQLコマンド
対称キーを使用してSQLデータベースの列を暗号化しました。今、私は、データベース内の暗号化された値を持っていると私は、キーを開き、クエリを実行する場合:Management Studioのクエリエディタで
SELECT Convert(varchar, DECRYPTBYKEY(ColumnName)) as ClientSecret
FROM dbo.Sample
それは大丈夫です、それが復号化された値を返します。
しかし、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();
}
}
私の質問は、以下の通りである:
まず、なぜこれが動作しませんか?
第2に、暗号化アルゴリズムを使用して(サーバーに要求するのではなく)アプリケーションの列の値を復号化するより良い方法がありますか?
私はあなたがアプリケーションからそれを実行するときにコマンドの一部としてキーを開く必要があると思います。あなたはそれを試しましたか? – tattarrattat
はい。私はそれを試した。 – StefanL19