Oracle 密码反向到ASCII码多位置的解密
如何创建一个过程来解密密码反向ASCII码多位置字符并与ASCII连接 密码示例:123 加密至:49491005015351 它是这样加密的:Oracle 密码反向到ASCII码多位置的解密,oracle,plsql,Oracle,Plsql,如何创建一个过程来解密密码反向ASCII码多位置字符并与ASCII连接 密码示例:123 加密至:49491005015351 它是这样加密的: v := v || ASCII(substr(u_pass,i,1)) * instr(u_pass,substr(u_pass,i,1)) 反过来的问题是,每个加密字符的长度可能不同。 请注意,下面的算法查找给定字符的最短序列。在某些情况下,这可能是不正确的。在这些情况下,此代码将无法解密字符串的其余部分 v := <encrypted pa
v := v || ASCII(substr(u_pass,i,1)) * instr(u_pass,substr(u_pass,i,1))
反过来的问题是,每个加密字符的长度可能不同。 请注意,下面的算法查找给定字符的最短序列。在某些情况下,这可能是不正确的。在这些情况下,此代码将无法解密字符串的其余部分
v := <encrypted password>;
i := 1; -- Character
pos := 1; -- Position in v
while (pos < length(v)) loop
j=1;
found = false;
while not found and j + pos <= length(v) loop
if mod(to_number(substr(v, pos, j), i) = 0 then
-- Possible match
anum := to_number(substr(v, pos, j)/ j; -- ascii value of the next character
alen := length(trim(to_char(anum)));
if substr(v, pos + j, alen) = anum then
-- Match found!
u_pass := u_pass || chr(anum);
found := true;
pos := pos + j + alen;
i := i + 1;
end if;
end if;
end loop;
end loop;
v:=;
i:=1;——性格
位置:=1;——在v中的位置
while(pos 虽然没有找到和j+pos,但这不是一个很好的加密算法。不要编写自己的加密算法。使用中内置的(这不是建议。你需要决定什么对你最合适。)此外,你的“加密”似乎是在循环中完成的。如果没有所有细节,任何人都不可能进行反向工程。此外,密码算法通常不是为解密而设计的——您对提交的密码进行加密,然后查看结果是否与存储的密码加密匹配。