確認したいことがいくつかあります:
<オール> <リ>
平文の内容とエンコーディングが同一であることを絶対に確認してください。 IIRC、ストリームのデフォルトは UTF-8 ですが、 VarBinaryToBase64
の場合 関数は nvarchar パラメータを受け取ります。これは Unicode になります。
両方の暗号化アルゴリズムが同じブロック サイズを使用していることを確認してください。 SQL では、CREATE SYMMETRIC KEY
を呼び出すときにアルゴリズムを決定します。 .アルゴリズムを指定しない場合、AES256 が使用されます。 .NET で RijndaelManaged
を使用 、デフォルトのブロックサイズは 128 だと思いますが、256 に設定できます (Aes
を使用する場合はできません) クラス)
私が最後に探しているのは、修正された投稿で言及したように、SQL Server が初期化ベクトルをどのように処理するかです。 authenticator
を使用していると言いたい
編集
私は道に迷っていました。私が発見したことを考えると、.NET クラスを使用して、SQL Server の組み込み暗号化によって暗号化されたテキストを復号化することはできません。これは、SQL Server がランダムな初期化ベクトルを含む、暗号化されるものに大量のグーを追加するためです。 Michael Cole の著書「Pro T-SQL 2005 Programmer's Guide」より (ただし、2008 年も同じ方法で行っています):