求一个加密算法,能够实现汉字,数字,字母,标点的加密和解密的(还有加密完的是可见字符的,加密完的长度不能太长于原始的字符串)哪个朋友有给提供点,谢谢了(100分

9

980

Unregistered / Unconfirmed
GUEST, unregistred user!
求一个加密算法,能够实现汉字,数字,字母,标点的加密和解密的(还有加密完的是可见字符的,加密完的长度不能太长于原始的字符串)哪个朋友有给提供点,谢谢了(100分)<br />求一个加密算法,能够实现汉字,数字,字母,标点的加密和解密的(还有加密完的是可见字符的,加密完的长度不能太长于原始的字符串)哪个朋友有给提供点,谢谢了

还能解密的那种,谢谢,也可发到信箱liu980_980@163.com

这里的加密和解密的我都看过了 不符合要求除了 base64的那个之外
 
比它短?我感觉晕,
加密还不如压缩,让人看ZLIB压缩,看起来比加密还拽。。。
 
to 蓝叶菱
加密完的长度不能太长于原始的字符串
你理解的有问题还是我写的有问题


就是加密的字符串 不能太 长于 原始的字符串
加完密 长度肯定加长 但是不能太长了
 
加密的不长 那安全性就差了 你要求好象只适合压缩,不过我想也压不了多少.
 
des。 或者res 可逆。 有32位的。 用16进制加密可视。
 
压不压缩 无所谓 就是别太长了 就可以
to duhai_lee
des。 或者res 你说的这个 加完了 长度是原始的2倍 差不多 。我就是找 比原始的长点可以 不能太长 ,密文的是 可视字符
 
不是,学习中,,,我感觉有点晕,,,帮你提前了。
如果是我做,我可能使用BASE64或者压缩的做法。。。
 
to 蓝叶菱
谢谢你的捧场 ,base64 这个我不是说了吗?除了他之外的,看到好的算法 帮帮忙
 
function HexCharToByte(Hex : char):Byte;
begin
Result:=0;
if Hex in [#48..#57] then { chars 0....9 }
Result:=Ord(Hex)-48
else if Hex in [#65..#70] then { chars A....F }
Result:=Ord(Hex)-65 + 10;
end;

//字符串加密/还原(dir=0/1)
function EncryptP(const S: String;dir:byte): String;
const
mm=7;
key:array[0..mm] of byte=($A2,$F9,$AA,$55,$E3,$6D,$8A,$47);//这里的常量是加密异或码(作为加密密钥用的),可自行修改为你需要的值就可以实现不同的加密密钥了。或者你可以改改这个函数,自己传一个固定长度(或变长)的密钥进来。
var
i, L : DWord;
b, k : byte;
begin
Result := '';
L:=Length(S);
if L<1 then exit;
k:=0;
if dir=0 then begin
//加密
for i := 1 to L do begin
b := byte(S) xor key[k];
Result := Result + IntToHex(b,2);
inc(k);
if k>7 then k:=0;
end
end else if dir=1 then begin
//还原
i:=1;
while i<L do begin
b:=HexCharToByte(S)*16+HexCharToByte(S[i+1]);
Result := Result + chr(b xor key[k]);
inc(i,2);
inc(k);
if k>7 then k:=0;
end;
end;
end;
 
to zqw0117
你的代码 我看了 谢谢你了啊。有个问题就是 加密的长度 是原始字符的2倍还多啊
例如
Edit1 加密完 是
E79DC321D2 有没有长度稍微少点的
 
随便用个加密算法,加密后,再压缩字符串
这样就不会比原来的字符长了喽
 
好办法 。压缩算法 有吗????
 
这个长度问题很无奈的,你既然要转换成字符类型,但是一个byte是有256个可能的,最大的用字符表示方法就是FF,占2个字符!所以不可能太小了,除非把每一个Byte对应特殊字符(0-9,A-Z,a-z,可是还不够255个可用的变化啊),所以,最终只能做成不可见的字符,那又不符合你的要求了,故很难达到你的要求。
 
to zqw0117
那也谢谢你了,我通过你这个 在家一个 字符串压缩算法 ,应该可以了,我找找压缩算法,谢谢你的参与.
 
D7自带的EncdDecd.pas的可加解密字符,ZLIB.pas可压缩流或字符
 
非敏感的信息也加密?
 
ZLIB.pas 压缩完了 都是不可见字符了啊?我要的是 数字在、字母压缩完了 还是数字、字母的组合
 
头脑要转一下嘛
可先压缩,再加密,不就是字符了
 
我测试过了 压缩 -》 加密 -》解密-》解压缩 在解密的时候 就对不上了 有没有好的呢
 
找找 JEDI CODE Library,里面有加密解密的函数
 

Similar threads

D
回复
0
查看
846
DelphiTeacher的专栏
D
D
回复
0
查看
643
DelphiTeacher的专栏
D
D
回复
0
查看
621
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部