Encryption μέ Function στον MS SQL

Η συνάρτηση επιστρέφει ένα 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.

 

 

 

Share


Έχουν δημοσιευτεί Τρίτη, 31 Ιανουαρίου 2006 10:30 μμ από το μέλος imanos
Καταχώρηση στις κατηγορίες:

Σχόλια:

Χωρίς Σχόλια