2013-02-26 10 views
5

SQL Serverにデータを暗号化するアルゴリズムが存在しますか。私は暗号化する必要があるが、私はストアドプロシージャで渡されたデータを暗号化する必要があるパスワードフィールドがあります。つまり、暗号化されたデータをC#コードから渡すことはできません。SQL Serverの列のデータを暗号化します

CREATE PROC saveData(@p1 VARCHAR(50), 
       @p2 VARCHAR(50)) 
AS 
BEGIN 
    DECLARE @encryptedP1 VARCHAR(50) 

    SET @encryptedP1=dbo.fnEncrypt(@p1) --ENCRYPTING THE DATA WITH AN INBUILT FUNCTION 

    INSERT INTO table1 
       (column1, 
       column2) 
    VALUES  (@encryptedP1, 
       @p2) 
END 
+0

暗号化があいまいなデータを解読。どの暗号化アルゴリズムを使用しますか?秘密鍵と公開鍵はどこに保管されますか?暗号化する必要があるのか​​暗号化する必要がありますか? – crush

+0

セキュリティの目的に最も適していることを私に教えてください –

+0

これはデータの処理内容によって異なります。単にパスワードをリセットするのではなく、パスワードを回復する必要がある場合は、ハッシングが問題になりません。 – crush

答えて

-1

ハッシュは技術的に暗号化ではありませんが、私は塩漬けSHA1またはMD5

CONVERT(VARCHAR(32), HashBytes('MD5', '[email protected]'), 2) 

をお勧めします。

+0

私はすでに、私はCで暗号化/復号化を許可されていないと言いました。# –

+0

これは暗号化ではなくハッシュです。また、SQLでSHA1とMD5の両方を実行することもできます。 – crush

+0

私の編集をご覧ください。 – idipous

3

いつものように、良い古いPinal Daveには、あるものがあります。useful information on this。少し複雑ですが、でなければなりません。クライアント側のコードではなくSQL Serverで実行する必要があります。かなりのCPU集約的な処理ではあるが、パフォーマンスの問題に注意を払う必要があるかもしれません。

+2

今年の虚偽記載。一般的に、このような処理をデータベースサーバーで実行することはお勧めしません。 (注釈は批評ではない) – crush

+6

Downvoter - care to comment?元の質問は、彼が得たものであるSQL Serverの暗号化について尋ねました。あなたが良いアイデアに同意しないのでちょうどdownvoteに少し意味があるようです。ヘック私もそれを指摘した... – Simon

+0

@シモン:検索先を私にここでは、リンクから関連情報を追加することがあります – TheGameiswar

4

これは非常に高速な例です。 非対称キーと動作します。これが助けてくれるといいなあ

まずオフ:は、このコード使用して非対称キーを作成します。


USE [yourDB] 

GO 

CREATE ASYMMETRIC KEY ClaveAsym 

WITH ALGORITHM = RSA_2048 ---->Take a look in this type of algorithms 

ENCRYPTION BY PASSWORD = 'yourKey' 

GO 

はこれを覚えておいてください、あなたは常にあなたがや暗号を解読したいという変数を宣言する必要があります

DECLARE @KEYID INT 
SET @KEYID = AsymKey_ID('ClaveAsym') 

SELECT columnA, CAST(DecryptByAsymKey(@keyid, columnUser, N'yourKey') AS VARCHAR(100)), 
     CONVERT(VARCHAR(MAX), DECRYPTBYASYMKEY(@keyId, columnPass, N'yourKey')) 
FROM yourTable 

データ暗号化

DECLARE @User VARCHAR(MAX), @pass VARCHAR(MAX) 

SET @User = 'yourUser' 

sET @pass = 'yourPass' 

DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym') 

INSERT INTO yourTable(User, passw) VALUES EncryptByAsymKey (@keyid, @User), EncryptByAsymKey (@keyid, @pass)) 
関連する問題