2

2 つのストアド プロシージャEncodeがあり、Decodeこの sp を使用して、datetime列の値 (たとえばDob) を暗号化された日付に変換したいと考えています。問題は、暗号化された形式が datetime(varbinary) ではないため、そのフィールドに挿入できないことです。データ型を変更したり、新しい列を追加したりすることは、私のデータベースが多くのテーブルと sps を持つ巨大なものであるため、有利です。私が現在使用している手順は次のとおりです。

declare @datetime
set @datetime='01/02/2008 12:45 PM'
declare @secretDate varchar(400)
declare @date varchar(200)
set @date=(select Convert(varchar(200),@datetime,120)
EXEC @secretDate=dbo.Encode @date
set @date=(select Convert(varchar(200),@secretdate,120))
select Convert(varchar(200),convert(varbinary(MAX),@date)) as EncryptedDate

どんな提案でも大歓迎です!

4

2 に答える 2

2

この列定義の変更は、複数の手順で行う必要があります。

1) エンコードされた値に新しい encryptedDate 列セットを追加します。

2) テーブルから既存の日付列を削除します。

3) encryptedDate の名前を既存の日付列名に変更します。

ステップ 2 と 3 を 1 つのコマンドで実行できるかもしれませんが、構文はわかりません。

どんな提案でも大歓迎です!

この全体が悪い考えのように聞こえます。データが暗号化されていても、「デコード」関数が DB 内のストアド プロシージャである場合、データは事実上暗号化されません。これを行うと、すべてのデータ比較が機能しなくなります。これは悪いことです。

ユーザーに提示したくない場合は、DB から読み取るときにデータをエンコードしないのはなぜですか?

于 2012-07-16T07:37:41.970 に答える
0

時間、特に日付は、非常に珍しい非線形構造を持っています。日付用の構造体に日付を格納することさえ困難です。このデータを暗号化して保存する必要がある場合は、日付/日時フィールドに保存しようとしないでください。

于 2012-07-16T08:11:23.407 に答える