sql >> データベース >  >> RDS >> Sqlserver

C# と SQL2k8 AES 暗号化の間の互換性を取得するにはどうすればよいですか?

    確認したいことがいくつかあります:

    <オール> <リ>

    平文の内容とエンコーディングが同一であることを絶対に確認してください。 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 年も同じ方法で行っています):



    1. US7ASCII文字セットがある場合、なぜ非ASCII文字を格納できるのですか?

    2. WHERE句を使用したSQLLIMIT

    3. ODP.NETのOracleParameterを介して渡されたバインディング変数のトレース情報を取得するにはどうすればよいですか?

    4. MSSQLサーバーでPDOを使用しているときにドライバーエラーを見つけることができませんでした