パスワードを解読する手順 a の作成方法 逆 ASCII コードの複数の場所の文字と ASCII との連結
パスワードの例: 123 に暗号化: 49491005015351
次のように暗号化されます。
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;