对字符串加密的问题

lazywolf 2003-09-23 05:36:50
现在采用XOR对字符串进行加密,结果问题出在加密以后在字符串中出现#0,字符串就表示自动截断,解密的时候字符串就自然少了一截。

现在怎样对字符串加密?各位兄台帮忙!
...全文
35 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazywolf 2003-09-23
  • 打赏
  • 举报
回复
不过还是谢谢: Delphi_Li(Delphi Li) ,帮了大忙,最少有50分了!:)
lazywolf 2003-09-23
  • 打赏
  • 举报
回复
sorry,上面
RandomValue:=Random(255);
x:=Ord(Str1[i]) XOR Random(256);
有点问题,应该是:
RandomValue:=Random(255);
x:=Ord(Str1[i]) XOR RamdomValue;
lazywolf 2003-09-23
  • 打赏
  • 举报
回复
那各位兄台看看我的算法了,献丑了!


Function Encrypt(Str1:String):String;
//加密程序
var
RandomValue,X:Byte;
Str2:String;
i:Integer;
begin
RandSeed:=12345;
for i:=1 to Length(Str1) do
begin
RandomValue:=Random(255);
x:=Ord(Str1[i]) XOR Random(256);
Str2:=Str2 + Chr(x);
end;
Result:=Str2;
end;

Function Decrypt(Str1:String):String;
//解密程序,和加密程序差不多,采用random值是伪随机,
//如果指定RandomSeed,则Random的开始规律是一致的原理
var
RandomValue,X:Byte;
Str2:String;
i:Integer;
begin
RandSeed:=12345;
for i:=1 to Length(Str1) do
begin
RandomValue:=Random(255);
x:=Ord(Str1[i]) XOR Random(256);
Str2:=Str2 + Chr(x);
end;
Result:=Str2;
end;

现在问题是如果遇到加密以后字符串中出现#0这个字符,则字符串在存入数据库后再取出,在#0处被自动截断,怎样解决这个问题?
Delphi_Li 2003-09-23
  • 打赏
  • 举报
回复
到Torry.net上查查,有许多DES加密算法(数据加密标准)!!!

我给你一个简单的算法:
Unit EncryptIt;

Interface
Uses
Classes;
Const
C1 = 05888;
C2 = 01958;
kk = 12588;

Function Encrypt(Const S: String): String;
Function Decrypt(Const S: String): String;

Implementation

Uses Sysutils;

Function Encrypt(Const S: String): String;
Var
I, key: Integer;
M: Byte;
str: String;
Begin
key := kk;
For I := 1 To Length(S) Do
Begin
M := byte(S[I]) Xor (Key Shr 4);
Key := (M + Key) * C1 + C2;
str := Format('%2x', [M]);
If str[1] = ' ' Then
str[1] := '0';
Result := Result + str;
End;
End;

Function Decrypt(Const S: String): String;
Var
I, key: Integer;
M: Byte;
Begin
key := kk;
For I := 1 To Length(S) Div 2 Do
Begin
M := strToInt('x' + copy(s, I * 2 - 1, 2));
Result := Result + char(M Xor (Key Shr 4));
Key := (M + Key) * C1 + C2;
End;
End;

End.
zswangII 2003-09-23
  • 打赏
  • 举报
回复
string中是可以保存#0~~
除非你使用的是PChar~~
这样你在加个变量保存长度不也可以~~

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧