[ erkan @ 25.10.2006. 11:31 ] @
Pozdrav svima,

ne radim bas puno sa bazama ali mi se ukazala potreba
za prebacivanjem podataka iz jedne tabele u drugu tabelu na posebnoj bazi
s tim sto bi bilo dobro da enkriptujem podatke u toj drugoj tabeli.
Postoji li nesto vec na MS SQL serveru da mogu kriptovati polja pomocu nekog
kljuca za enkripciju ili slicno nesto?!

ah, da radi se o MS SQL Serveru 2000
[ erkan @ 27.10.2006. 14:44 ] @
evo da odgovorim. Malo sam cackao i nasao neki primjer na net-u, malo ga izmjenio
da koristi string kao kljuc enkripcije i radi:

PS. nije high level ali je za moje potrebe sasvim dovoljan. Dvije funkcije jedna za nekripciju i druga za dekripciju.
Radi prilicno dobro. I jos nesto, funkcije su takodje kriptovane i ne vidi se tijelo funkcije iz recimo query analyzer-aa

Code:


CREATE FUNCTION [erk].[EncryptString] ( @vchClearString VARCHAR(100), @encryptKey varchar(30))
RETURNS NVARCHAR(100) WITH ENCRYPTION AS
BEGIN
      
    DECLARE @vchEncryptedString NVARCHAR(100)
    DECLARE @Idx INT
    DECLARE @encryptLen INT
    DECLARE @encryptIndex INT

    SET @encryptIndex = 0;
    SET @encryptLen = LEN(@encryptKey)
    SET @Idx = 1
    SET @vchEncryptedString = ''
    
    
    WHILE @Idx <= LEN(@vchClearString)
    BEGIN
        IF(@encryptIndex = @encryptLen)
    BEGIN
            SET @encryptIndex = 0;
        END
         
        SET @vchEncryptedString = @vchEncryptedString + 
                                NCHAR(ASCII(SUBSTRING(@vchClearString, @Idx, 1)) +
                                ASCII(SUBSTRING(@encryptKey, @encryptLen-@encryptIndex,1)) + @Idx - 1)
        SET @Idx = @Idx + 1
        SET @encryptIndex = @encryptIndex + 1;
    END
    
    RETURN @vchEncryptedString

END
GO


CREATE FUNCTION [erk].[DecryptString] ( @vchEncryptedString NVARCHAR(100), @encryptKey varchar(30))
RETURNS VARCHAR(100) WITH ENCRYPTION AS
BEGIN

DECLARE @vchClearString VARCHAR(100)
DECLARE @Idx INT
DECLARE @encryptLen INT
DECLARE @encryptIndex INT

SET @encryptIndex = 0;
SET @encryptLen = LEN(@encryptKey)
SET @Idx = 1
SET @vchClearString = ''

WHILE @Idx <= LEN(@vchEncryptedString)
BEGIN
    IF(@encryptIndex = @encryptLen)
    BEGIN
        SET @encryptIndex = 0;
    END
    SET @vchClearString = @vchClearString + 
                        CHAR(UNICODE(SUBSTRING(@vchEncryptedString, @Idx, 1)) - 
                        ASCII(SUBSTRING(@encryptKey, @encryptLen-@encryptIndex,1)) - @Idx + 1)
    SET @Idx = @Idx + 1
    SET @encryptIndex = @encryptIndex + 1;
END

RETURN @vchClearString

END
GO