我找了一个只能加密 解密的没有。
var
str:string; LenIDNmuber,i:Integer;
a,sum:LongWord;
begin
str:='123456789'
LenIDNmuber:=Length(Str);
if LenIDNmuber>0 then
begin
for i:=1 to LenIDNmuber do
begin
a:=ord(Str[i]) shl $19;
sum:=sum+a;
end;
Edit3.Text:=IntToStr(sum);
end;这个的解密算法不知道怎么写,别的算法也可以能把数字字母加密 成数字字母 还能解密回来就可以
var
str:string; LenIDNmuber,i:Integer;
a,sum:LongWord;
begin
str:='123456789'
LenIDNmuber:=Length(Str);
if LenIDNmuber>0 then
begin
for i:=1 to LenIDNmuber do
begin
a:=ord(Str[i]) shl $19;
sum:=sum+a;
end;
Edit3.Text:=IntToStr(sum);
end;这个的解密算法不知道怎么写,别的算法也可以能把数字字母加密 成数字字母 还能解密回来就可以
解决方案 »
- 对 Delphi 甚感兴趣,想先有个概念,请指教。
- 关于combobox中获得某个字段的所有不同的值
- 如何将adoquery中字段为空的全部填上0,字段为数字型
- 请问:怎么样打印image里面的picture 啊》?》》
- 小女子初学,急,请教如何打印DBGRID里显示的内容?DELPHI5.0版本开发情况下。
- delphi开发考试系统电子试卷的展现问题
- ActiveForm如何获得所在htm文件中的参数
- delphi7+fastreport2.5,动态表格问题??
- 如何在程序中設置打印機的分辨率
- 这个问题把我折腾了几天,请各位大虾帮我看看。解决者我一定高分送出,决不食言!
- 请问DELPHI怎么处理此SQL语句
- 关于LISTVIEW操作数据库问题!!!急急急,在线等!!!
begin
for i := 0 to Length(s) do
Result := Result + chr(strtoint(s[i]) shr $19);
end;
C1=52845; //字符串加密算法的公匙
C2=22719; //字符串加密算法的公匙
implementation
{$R *.dfm}
function TransChar(AChar: Char): Integer;
begin
if AChar in ['0'..'9'] then
Result := Ord(AChar) - Ord('0')
else
Result := 10 + Ord(AChar) - Ord('A');
end;//字符转化成十六进制
function StrToHex(AStr: string): string;
var
I : Integer;
// Tmp: string;
begin
Result := '';
For I := 1 to Length(AStr) do
begin
Result := Result + Format('%2x', [Byte(AStr[I])]);
end;
I := Pos(' ', Result);
While I <> 0 do
begin
Result[I] := '0';
I := Pos(' ', Result);
end;
end;//十六进制转化成字符
function HexToStr(AStr: string): string;
var
I : Integer;
CharValue: Word;
begin
Result := '';
for I := 1 to Trunc(Length(Astr)/2) do
begin
Result := Result + ' ';
CharValue := TransChar(AStr[2*I-1])*16 + TransChar(AStr[2*I]);
Result[I] := Char(CharValue);
end;
end;
//字符串加密函数
function Encrypt(const S: String; Key: Word): String;
var
I : Integer;
begin
Result := S;
for I := 1 to Length(S) do
begin
Result[I] := char(byte(S[I]) xor (Key shr 8));
Key := (byte(Result[I]) + Key) * C1 + C2;
if Result[I] = Chr(0) then
Result[I] := S[I];
end;
Result := StrToHex(Result);
end;//字符串解密函数
function Decrypt(const S: String; Key: Word): String;
var
I: Integer;
S1: string;
begin
S1 := HexToStr(S);
Result := S1;
for I := 1 to Length(S1) do
begin
if char(byte(S1[I]) xor (Key shr 8)) = Chr(0) then
begin
Result[I] := S1[I];
Key := (byte(Chr(0)) + Key) * C1 + C2; //保证Key的正确性
end
else
begin
Result[I] := char(byte(S1[I]) xor (Key shr 8));
Key := (byte(S1[I]) + Key) * C1 + C2;
end;
end;
end;
这个我试过,绝对可以。