• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 642
  • Last Modified:

Equivalent functions in sql server 2000 against functions of powerbuilder 7.


SELECT USER_ID,PASSWORD FROM PASSWORD

USER_ID PASSWORD
A      “›‹‡
B      ³¹‡
C      §‹µ¹•¥
D      ¯‹‘…§

The values in the column password has been saved from within a front end by a function f_encrypt.

Here
“›‹‡   means DIBA      (created from f_encrypt('DIBA'))
³¹‡   means BUYA
§‹µ¹•¥ means NAWZIR
¯‹‘…§ means RADFAS

Please note that “›‹‡ is created from f_encrypt('DIBA').Similarly DIBA can be obtained by f_decrypt('“›‹‡')

The two functions are:
[function f_encrypt]
integer chrvalue, seed,mlen,i
string  mstring, mchar
chrvalue = 0
seed = 17
mchar = ''
mstring  = trim(given_string)  
mlen     = len(mstring)
FOR  I = 1 TO mlen
     chrvalue = asc(mid(mstring,I,1))
     chrvalue = ((chrvalue + seed + 95 - I)*2) - 211
     mchar = mchar + char(chrvalue)
next
return (mchar)

[function f_decrypt]
integer chrvalue,i,mlen, seed
string mstring, mchar

chrvalue = 0
seed = 17
mchar = ''
mstring = trim(given_string)  
mlen    = len(mstring)

for  I = 1 TO mlen
       chrvalue = ASC(mid(mstring,I,1))
       chrvalue = (chrvalue + 211)/2 +I -  95 - SEED
       mchar    = mchar + char(chrvalue)
next

return (mchar)

I want those two functions/procedure to be created in sql server 2000.
0
Mateen
Asked:
Mateen
  • 3
  • 2
1 Solution
 
patriktCommented:
First one:

CREATE FUNCTION f_encrypt (@given_string varchar(50))
RETURNS varchar(50)
AS
BEGIN
declare @chrvalue int, @seed int, @mlen int,@i int
declare @mstring varchar(50), @mchar varchar(50)

SELECT @chrvalue = 0,@seed = 17,@mchar = ''
SET @mstring  = ltrim(rtrim(@given_string))  
SET @mlen     = len(@mstring)
SET @i=1
WHILE @i<=@mlen
BEGIN
     SET @chrvalue = ascii(substring(@mstring,@I,1))
     SET @chrvalue = ((@chrvalue + @seed + 95 - @I)*2) - 211
     SET @mchar = @mchar + char(@chrvalue)
     set @I=@I+1
END
return (@Mchar)
END
0
 
patriktCommented:
Secon one:
CREATE functION f_decrypt (@given_string varchar(50))
RETURNS varchar(50)
AS
BEGIN
declare @chrvalue int,@i int,@mlen int, @seed int
declare @mstring varchar(50), @mchar varchar(50)

SELECT @chrvalue = 0,@seed = 17,@mchar = ''
SET @mstring = ltrim(rtrim(@given_string))  
SET @mlen    = len(@mstring)
SET @i=1

WHILE @I <= @mlen
BEGIN
       SET @chrvalue = ASCii(substring(@mstring,@I,1))
       SET @chrvalue = (@chrvalue + 211)/2 +@I -  95 - @SEED
       SET @mchar    = @mchar + char(@chrvalue)
      SET @i=@i+1
END

return (@mchar)
END
0
 
patriktCommented:
I only rewrited sintax to SQL. You have to check data types if it is usable for your scenario.

SQL hates loops so I would try to find beter performing aproach...But for short strings it is not significant.

Patrik
0
 
MateenAuthor Commented:
Many many thanks patrikt
0
 
MateenAuthor Commented:
Please do submit when u find better approach. I shall be delighted.
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now