Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 641
  • 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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

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