Η συνάρτηση επιστρέφει ένα Encrypted varchar στοιχείο .Για νά κάνετε un-encrypt το στοιχείο απλά περάστε στην παράμετρο το Encrypted varchar στοιχείο.
CREATE FUNCTION PwdEncrypt
(
@Pwd as varchar(255)
)
RETURNS varchar(255)
AS
BEGIN
DECLARE @PwdEncrypted as varchar(255)
DECLARE @PwdLength as int
DECLARE @iPOS AS int
DECLARE @XOR AS int
--Το Encryption γίνεται μόνο όταν η παράμετρος δέν είναι null
IF @Pwd IS NOT NULL
BEGIN
SET @PwdLength = len(@Pwd)
-- Δημιουργία κλειδιού σέ συνδυασμό μέ το μέγεθος του pwd και της θέσης του πρώτου 'α' που βρίσκεται στο pwd
-- (Το γράμμα 'α' είναι ένα απο τα πιό κοινά γράμματα του αλφαβήτου)
-- (Βέβαια μπορεί νά τροποποιηθεί ανάλογα όπως θέλετε)
SET @XOR = @PwdLength + charindex(@Pwd,'α')
SET @iPOS = 1
SET @PwdEncrypted = ''
WHILE @iPOS <= @PwdLength
BEGIN
SET @PwdEncrypted = @PwdEncrypted + char(Ascii(substring(@Pwd, @iPOS, 1)) ^ @XOR)
SET @iPOS = @iPOS + 1
END
END
--Εάν η τιμή της παραμέτρου @Pwd είναι null τότε δέν γίνεται καμμία ενέργεια
IF @Pwd IS NULL
BEGIN
SET @PwdEncrypted = NULL
END
RETURN @PwdEncrypted
END
GO
GRANT EXECUTE ON PwdEncrypt TO PUBLIC
Θά μου πείτε γιατί να το κάνω από των SQL SERVER και όχι μέσα από τον Client όπου μόνο αυτός θά ξέρει το κλειδί και δέν θα μπορεί να το κάνει όποιος ξέρει SQL και την συγκεκριμμένη λειτουργία.
Σίγουρα το ερώτημα θά είναι εύλογο .Απλά είναι ένας εύκολος τρόπος να αποθηκεύεται κάποια δεδομένα μέ ένα σχετικό encryption.