how to encrypt the password column

后端 未结 6 1966
温柔的废话
温柔的废话 2021-01-12 08:16

I have user table in SQL Server 2008 r2. Nothing there is encrypted yet but I would like to at the least encrypt the passwords until the app is ready that will handle this b

6条回答
  •  猫巷女王i
    2021-01-12 08:39

    We can Create some simple sql function to encrypt and decrypt the Password column in your web page:

    Code:Encryption

    `CREATE FUNCTION [dbo].[ENCRYPT] 
     (     
    @DB_ROLE_PASSWORD VARCHAR(MAX)
     ) 
    RETURNS VARCHAR(MAX)
     AS    
     BEGIN   
         DECLARE     
         @STR_LEN NUMERIC(10),     
          @ENCRYPTED_PASSWORD VARCHAR(100),  
             @TRIAL_CHARACTER VARCHAR(1),    
           @TRIAL_NUMBER NUMERIC(4) 
           SET @ENCRYPTED_PASSWORD = NULL     
       SET @STR_LEN =LEN(@DB_ROLE_PASSWORD) 
        DECLARE          
    @I INT        
    SET @I = 1    
        DECLARE      
        @LOOP$BOUND INT
            SET @LOOP$BOUND = @STR_LEN       
     WHILE @I <= @LOOP$BOUND         
            BEGIN  
                /*             *   SSMA WARNING MESSAGES:             *   O2SS0273: ORACLE SUBSTR FUNCTION AND SQL SERVER SUBSTRING FUNCTION MAY GIVE DIFFERENT RESULTS.             */            
      SET @TRIAL_CHARACTER = SUBSTRING(@DB_ROLE_PASSWORD, @I, 1)     
             SET @TRIAL_NUMBER = ASCII(@TRIAL_CHARACTER)           
       IF (@TRIAL_NUMBER % 2) = 0            
        SET @TRIAL_NUMBER = @TRIAL_NUMBER - 6    
             ELSE                 
    SET @TRIAL_NUMBER = @TRIAL_NUMBER - 8    
              SET @TRIAL_CHARACTER = CHAR(CAST(@TRIAL_NUMBER + @I AS INT)) 
                 SET @ENCRYPTED_PASSWORD = ISNULL(@ENCRYPTED_PASSWORD, '') + ISNULL(@TRIAL_CHARACTER, '') 
                 SET @I = @I + 1          
     END       
     RETURN @ENCRYPTED_PASSWORD 
        END`
    

    Code:Decryption

    `CREATE FUNCTION [dbo].[DECRYPT] 
    ( 
       @DB_ROLE_PASSWORD VARCHAR(MAX)
    )
    RETURNS VARCHAR(MAX)
    AS 
    
       BEGIN
    
          DECLARE
             @STR_LEN NUMERIC(10), 
             @DECRYPTED_PASSWORD VARCHAR(100), 
             @TRIAL_CHARACTER VARCHAR(1), 
             @TRIAL_NUMBER NUMERIC(4), 
             @CHECK_CHARACTER VARCHAR(1), 
             @V_DB_ROLE_PASSWORD VARCHAR(100)
    
          SET @V_DB_ROLE_PASSWORD = @DB_ROLE_PASSWORD
    
          SET @DECRYPTED_PASSWORD = NULL
    
          SET @STR_LEN = LEN(@V_DB_ROLE_PASSWORD)
    
          DECLARE
             @I INT
    
          SET @I = 1
    
          DECLARE
             @LOOP$BOUND INT
    
          SET @LOOP$BOUND = @STR_LEN
    
          WHILE @I <= @LOOP$BOUND
    
             BEGIN
    
                /*
                *   SSMA WARNING MESSAGES:
                *   O2SS0273: ORACLE SUBSTR FUNCTION AND SQL SERVER SUBSTRING FUNCTION MAY GIVE DIFFERENT RESULTS.
                */
    
                SET @TRIAL_CHARACTER = SUBSTRING(@V_DB_ROLE_PASSWORD, @I, 1)
    
                SET @TRIAL_NUMBER = ASCII(@TRIAL_CHARACTER) - @I
    
                IF (@TRIAL_NUMBER % 2) = 0
                   SET @TRIAL_NUMBER = @TRIAL_NUMBER + 6
                /*-IE EVEN*/
                ELSE 
                   SET @TRIAL_NUMBER = @TRIAL_NUMBER + 8
                /*-IE ODD*/
    
                SET @DECRYPTED_PASSWORD = ISNULL(@DECRYPTED_PASSWORD,'') + ISNULL(CHAR(CAST(@TRIAL_NUMBER AS INT)), '')
    
                SET @I = @I + 1
    
             END
    
          RETURN @DECRYPTED_PASSWORD
    
       END`
    

提交回复
热议问题