反转密码字符串,然后为每个字符反转显示字母表中的上一个字母

时间:2016-09-07 16:07:27

标签: sql-server

我们有一个应用程序,它按以下顺序在数据库中存储密码; 它反转用户创建的原始密码并将字符增加1.例如,如果我选择密码 - ' 演示' - 密码将存储为 - ' pnfe ' - 我使用了反向()并反转而不是演示存储为 pfne 它将现在存储为 enfp ,您可以清楚地看到 enfp 演示增加1个字符。

我最近开始在这家公司工作,我绝不是一名程序员,但我喜欢环顾数据库表并偶然发现这张桌子。我希望能够在运行脚本或查询时看到密码的原因是因为这里的人每隔一周忘记密码,所以我们要么重置密码,要么通常尝试解决,这是一个schlepp 。任何帮助将不胜感激。

欢呼声 杰森

1 个答案:

答案 0 :(得分:1)

MSDN就是一个很好的例子。我对它进行了修改,将以前的ASCII值用于你的数据库,反过来,并将其返回。

if object_id('tempdb..#psswd') is not null drop table #psswd
create table #psswd (userid int, pswd varchar(40))
insert into #psswd (userid, pswd) values (1,'pnfe'), (2,'tofuujl')

DECLARE @userID int = 2


-- Create variables for the character string and for the current   
-- position in the string.  
DECLARE @position int
-- Initialize the current position and the string variables.  
SET @position = 1;  
WHILE @position <= DATALENGTH((SELECT pswd FROM #psswd WHERE userid = @userID))  
   BEGIN  
        SELECT CHAR(ASCII(SUBSTRING(REVERSE(pswd), @position, 1)) - 1) FROM #psswd WHERE userid = @userID
   SET @position = @position + 1  
   END;  
GO  

Credit