2017-06-20 30 views
0

は、私は次のリンク復号化列レベルのSQL暗号化された値は

で入手可能な情報を使用して、私はSQL Server 2008でデータの暗号化と復号化を試みている

C#での暗号化と復号化技術を読み取り、実験開始されています私はSQLを使用して値を復号化することができ(リンクの例から)次のクエリを使用することにより

http://www.c-sharpcorner.com/UploadFile/chinnasrihari/data-encryption-and-decryption-in-sql-server-2008/

OPEN SYMMETRIC KEY Sym_password 
DECRYPTION BY CERTIFICATE Cert_Password WITH PASSWORD = 'Password!2'; 
SELECT CAST(DECRYPTBYKEY([Password]) as varchar(200)) 
FROM Security 
CLOSE SYMMETRIC KEY Sym_password; 
0を照会します

C#アプリケーションから同じ操作を実行するにはどうすればよいですか?

私のMVCアプリケーションでは、ログインするユーザー名として電子メールアドレスを使用しています(単純なメンバーシップを使用してパスワードがデフォルトでハッシュされています)。 SQLレベルの電子メールフィールドを暗号化し、その値をC#(アプリケーションレベル)で復号化する最良の方法を提案してください。

ユーザーがアプリケーションでユーザー名(電子メール)を入力すると、これをSQLレコードの暗号化された値と比較します。

+2

SQL Server 2008のメインストリームサポートは2年前に終了しました。 SQL Server 2016(https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine)の列レベルの暗号化に移行することを検討してください。これにより、サーバーではなくSQL ServerクライアントAPIによってコードに透過的に暗号化を行うことができます。 –

+0

情報のために@DanGuzmanに感謝します。しかし、残念ながら今は2008年版しかありません。 –

+0

暗号化された電子メールである必要がありますか?なぜ塩漬けされたハッシュを使用しないのですか? –

答えて

0
CREATE TABLE [Users] (
    UserID int identity(1,1) primary key, 
    [Login] varchar(32) unique, 
    [Password] varbinary(256) not null, 
    ModifiedDate datetime default (getdate())); 

    DECLARE @EncryptionKey nvarchar(32) = '007London' ; 
DECLARE @Password varchar(32) = 'LoveDanger&Romance' ; 

INSERT [Users] ([Login], [Password]) SELECT 'JamesBond', 
     EncryptByPassPhrase(@EncryptionKey, @Password) 

      select * from Users 

       DECLARE @EncryptionKey nvarchar(32) = '007London' ; 
DECLARE @Password varchar(32) = 'LoveDanger&Romance' ; 

      SELECT [Login], 
     DecryptedClearText= Convert(varchar(32), 
     DecryptByPassPhrase(@EncryptionKey, [Password])), 
     [Password] 
FROM [User] 
関連する問題