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
Samo se budala saplice na kamen iza sebe.