如何创建程序a来解密密码反向ASCII码多个位置字符串并用ASCII连接
示例密码:123 加密至:49491005015351
它是这样加密的:
v := v || ASCII(substr(u_pass,i,1)) * instr(u_pass,substr(u_pass,i,1))
答案 0 :(得分:0)
相反的问题是每个加密字符的长度可能会有所不同。 请注意,下面的算法会查找给出字符的最短序列。可能存在不正确的情况。在这些情况下,此代码将无法解密字符串的其余部分。
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;