有些数据存到数据库里时是经过加密后的数据,比如:密码。关于数据加密的算法有哪些以及如何解码正确取出这些数据呢?
能提供一段程序跟大伙共享吗?
谢谢了。
能提供一段程序跟大伙共享吗?
谢谢了。
解决方案 »
- 搜集了一下进程隐藏的若干方法
- 各位大侠,谁知道过滤黄色网站或其他不良网站的原理是什么啊?
- 关于chart自动更新的问题
- Oracle 数据库到底能不能打进安装程序?用Installsheld
- 如何发布程序?
- 关于QuickRep1.PrinterSetup;
- 在三层模式下dbgrid的某列无法显示下拉框的问题
- toolbar怎么现实背景图片?立即给分
- 问一个小小问题:在SQL SERVER中的存储过程中,是不是表变量不能定义成output输出变量?如能,应如何定义?
- 动态创建控件的标签问题,在线等
- 请问谁有Delphi 8的补丁?
- 一个很基础的问题,那就是用什么控件可以装载image控件,并且image的宽度大于容器宽度时,这个控件会产生滚动条呢?
{**************************************************
**
** 解密过程
**
****************************************************}
function password_out(S : string) : shortstring; stdcall; //將轉換后的密碼轉換
type
PWORD = ^WORD;
var
Buffer : variant;
PW : shortstring;
P : PWORD;
I : Integer;
V : Integer;
begin
PW := ' ';
P := PWORD(@PW[0]);
I := 1;
while I <= Length(S) do begin
Buffer := Copy(S, I, 5);
I := I + 5;
V := StrToInt(Buffer) - 34567;
P^ := V;
Inc(P);
end;
Result := pw;
end;
{**************************************************
**
** 加密过程
**
****************************************************}
function password_in(S : string) :shortstring; stdcall; //將字符轉換成密碼
type
PWORD = ^WORD;
var
Len : Integer;
I : Integer;
V : DWORD;
P : PChar;
Buffer : string[255];
a:string[100];
// b:string[100];
begin
Buffer := S;
Len := Length(Buffer) + 1;
if (Len mod 2) <> 0 then
Inc(Len);
if Len < 10 then
Len := 10;
I := Length(Buffer);
if I = 0 then
Buffer := IntToStr(GetTickCount)
else
while Length(Buffer) < 10 do
Buffer := Buffer + Buffer;
SetLength(Buffer, I);
P := PChar(@Buffer[0]);
for I := 1 to Len div 2 do begin
V := 34567 + PWORD(P)^;
P := P + 2;
a:=a+ Format('%5.5d', [V]);
end;
Result := a ;
end;
function Decrypt(const s:string;key:integer):string; //key=1时为加密,0为解密
var
I:Integer;
begin
Result:='';
case key of
1: //加密
begin
for i:=1 to length(s) do
result := result+chr(ord(s[i]) xor i xor 69);
result := result + char(69);
end;
0: //解密
begin
for i:=1 to length(s) - 1 do
result := result+chr(ord(s[i]) xor i xor 69);
end;
end;
end;