-1
如何創建過程的解密密碼反向ASCII代碼的多個位置炭和級聯與ASCII解密密碼相反ASCII代碼的多個位置
例如密碼:123 加密以:49491005015351
它加密像這樣:
v := v || ASCII(substr(u_pass,i,1)) * instr(u_pass,substr(u_pass,i,1))
如何創建過程的解密密碼反向ASCII代碼的多個位置炭和級聯與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;
這不是一個很好的加密算法。不要編寫自己的加密算法。使用[dbms_crypto]中的內置函數(http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_crypto.htm)(這不是建議,您需要決定哪種方法最適合您。 ) – Ben
此外,你的「加密」似乎是循環完成的。沒有所有細節的人都不可能進行逆向工程。 – Ben
另外,密碼算法通常不是用於解密的 - 您將提交的密碼加密並查看結果是否與存儲的密碼加密相匹配。 –