2013-02-26 19 views
5

Esiste un algoritmo nel server sql per crittografare i dati. Ho un campo password che ho bisogno di crittografare, ma devo crittografare i dati una volta che è passato nella stored procedure. Significa che non posso passare i dati crittografati dal mio codice C#.Criptare i dati in una colonna in 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

Encrypt è ambigua. Quale algoritmo di crittografia vuoi utilizzare? Dove verranno memorizzate le chiavi private e pubbliche? Ha bisogno di essere crittografato o crittografato con hash? – crush

+0

suggerisco quale sia il migliore per lo scopo di sicurezza –

+0

Dipende da cosa devi fare con i dati. Se hai mai bisogno di recuperare le password, invece di reimpostarle semplicemente, l'hashing è fuori questione. – crush

risposta

-1

Vorrei suggerire uno SHA1 o MD5

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

salata Anche se l'hashing non è tecnicamente la crittografia.

+0

Ho già detto che non mi è consentito crittografare/decriptare in C# –

+0

Questo è un hash, non crittografia. Inoltre, è possibile eseguire SHA1 e MD5 entrambi in SQL. – crush

+0

vedi la mia modifica per favore. – idipous

3

Come al solito, il buon vecchio Pinal Dave ha qualche useful information on this. È un po 'complicato, ma se il tuo deve fare farlo in SQL Server allora piuttosto che nel codice lato client allora dovrebbe fare il lavoro per te. Si potrebbe voler tenere d'occhio i problemi di prestazioni anche se è un processo piuttosto impegnativo per la CPU.

+2

Understatement of the year. Generalmente non è una buona idea eseguire questo tipo di elaborazione sul server Database. (annotazione non una critica) – crush

+6

Downvoter - cura di commentare? La domanda originale ha chiesto informazioni sulla crittografia IN SQL Server, che è ciò che ha ottenuto. Sembra un po 'meschino di downvote solo perché non sei d'accordo è una buona idea. Diamine ho anche detto che ... – Simon

+0

@Simon: la ricerca mi porta qui, si consiglia di aggiungere informazioni rilevanti dai link – TheGameiswar

4

Questo è un esempio molto veloce. Funziona con la chiave asimmetrica . Spero che questo possa aiutare.

Prima di tutto: creare la chiave asimmetrica utilizzando questo codice:


USE [yourDB] 

GO 

CREATE ASYMMETRIC KEY ClaveAsym 

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

ENCRYPTION BY PASSWORD = 'yourKey' 

GO 

Ricordati di questo, è necessario dichiarare una variabile sempre che si desidera decifrare o crittografare

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

decrittografia dei dati

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

crittografia dei dati

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)) 
Problemi correlati