升级一个已有的类似qq的东西。
原程序在发送信息前,对输入框的发送内容进行加密和压缩。在显示框里将信息再解密和解压缩后显示出来。
对于给一个字符串s,经过它的加密,解密处理后,s仍是个乱码,类似于这种信息:
{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
\viewkind4\uc1\pard\lang2052\f0\fs20\'b4\'f3\'b7\'a2\'c9\'fa\'b5\'c4
\par }
后面附有它的压缩和解压缩过程。
我的问题是不改它的压缩过程,怎么改下解压缩和解密的过程,使得字符串能被正确的解出来呢??
我曾把它的压缩过程改了一下,能正常解压缩字符串了,但是带来了很多其它的难处理的问题。它的压缩过程是 destStream := TStringStream.Create('');
try
cStream := TZCompressionStream.Create(destStream);
try
redtInput.Lines.SaveToStream(cStream)//redtInput.Lines是TStrings,就是输入的内容。
finally
cStream.Free;
end;
Result := sCmd + #13#10 + EncodeString(destStream.DataString);它的解压缩过程是:function DecodeAndUnCompress(const AString: string): string;
const
CReadLen = 1024;
var
srcStream: TStringStream;
dcStream: TZDecompressionStream;
iCount: Integer;
begin
//解码
Result := DecodeString(AString);
//解压缩
srcStream := TStringStream.Create(Result);
try
dcStream := TZDecompressionStream.Create(srcStream);
try
Result := '';
repeat
SetLength(Result, length(Result) + CReadLen);
iCount := dcStream.Read(Result[length(Result) - CReadLen + 1], CReadLen);
until (iCount <> CReadLen);
finally
dcStream.Free;
end;
finally
srcStream.Free;
end;
end;
原程序在发送信息前,对输入框的发送内容进行加密和压缩。在显示框里将信息再解密和解压缩后显示出来。
对于给一个字符串s,经过它的加密,解密处理后,s仍是个乱码,类似于这种信息:
{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
\viewkind4\uc1\pard\lang2052\f0\fs20\'b4\'f3\'b7\'a2\'c9\'fa\'b5\'c4
\par }
后面附有它的压缩和解压缩过程。
我的问题是不改它的压缩过程,怎么改下解压缩和解密的过程,使得字符串能被正确的解出来呢??
我曾把它的压缩过程改了一下,能正常解压缩字符串了,但是带来了很多其它的难处理的问题。它的压缩过程是 destStream := TStringStream.Create('');
try
cStream := TZCompressionStream.Create(destStream);
try
redtInput.Lines.SaveToStream(cStream)//redtInput.Lines是TStrings,就是输入的内容。
finally
cStream.Free;
end;
Result := sCmd + #13#10 + EncodeString(destStream.DataString);它的解压缩过程是:function DecodeAndUnCompress(const AString: string): string;
const
CReadLen = 1024;
var
srcStream: TStringStream;
dcStream: TZDecompressionStream;
iCount: Integer;
begin
//解码
Result := DecodeString(AString);
//解压缩
srcStream := TStringStream.Create(Result);
try
dcStream := TZDecompressionStream.Create(srcStream);
try
Result := '';
repeat
SetLength(Result, length(Result) + CReadLen);
iCount := dcStream.Read(Result[length(Result) - CReadLen + 1], CReadLen);
until (iCount <> CReadLen);
finally
dcStream.Free;
end;
finally
srcStream.Free;
end;
end;
解决方案 »
- 急:请问如何对DBComboBox赋初值?
- 如何用程序保存网页中图片到本地
- 提个小问题,在delphi7中rightstr与leftstr怎么不好用?
- 关于数据库备份后恢复的问题,高分想送?
- CSDN的管理员是干什么吃的????????????
- 动态创建控件出错,有源代码,高手指教
- 请大家讨论一个关于连锁店的系统的思路
- WWWWA(aaaa) outer2000(天外流星) foilsman(刀仔) firetoucher(风焱) 进来。再给100分。
- 如何得到listview的item的高度
- 老千来,有时相商,重要~~
- 给大家看看D版的版服(白色的T恤)
- 怎么利用delphi调用WINEXEC函数删除本地文件
不用richedit的话,怎么能将这个rtf存到文件中,打开文件就能看到正常的信息?
引用单元 EncdDecd, function EncodeString(const Input: string): string;
function DecodeString(const Input: string): string;加密 解密 直接使用;
或者用ord('')把字符串的每个字符,转换成十进制,对于数字你可以随便操作 加减乘除。然后用chr(000) 把十进制数 转换成字符,你客户看见一长串数字,肯定眼花缭乱!
感谢以上各位。