求这个字符串加密函数的解密函数。 ( 积分: 100 )

  • 主题发起人 主题发起人 zuoc
  • 开始时间 开始时间
Z

zuoc

Unregistered / Unconfirmed
GUEST, unregistred user!
function encryptstring(InString: string): string;
const
Template = 'sqOz8sJn9L5GjnZYe2n9sFtlXeM8l1V4V';
CharTable = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var
i, CharVal: byte;
StartKey, MultKey, AddKey: Word;
begin
Result := '';
InString := InString + Chr(1);
StartKey := byte(InString[1]);
MultKey := StartKey * 100;
AddKey := StartKey * 512;
for i := 1 to length(Template) do
begin
CharVal := byte(InString[(i mod length(InString)) + 1]) xor (StartKey shr 8) xor byte(Template) + length(InString);
CharVal := (CharVal mod length(CharTable)) + 1;
Result := Result + CharTable[CharVal];
StartKey := (byte(Result) + StartKey) * MultKey + AddKey;
end;
end;
 
呵呵:)逆运算不就可以了吗?
 
这段代码好像有问题,[:(]
 
Johnny_du大哥,就是求逆运算的函数。
 
给你个例子
C1=52845
//字符串加密算法的公匙
C2=22719
//字符串加密算法的公匙

//字符串加密函数
function Encrypt(const S: String
Key: Word): String;
var
I : Integer

begin
Result := S;
for I := 1 to Length(S) do
begin
Result := char(byte(S) xor (Key shr 8))

Key := (byte(Result) + Key) * C1 + C2;
if Result = Chr(0) then
Result := S

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) xor (Key shr 8)) = Chr(0) then
begin
Result := S1

Key := (byte(Chr(0)) + Key) * C1 + C2
//保证Key的正确性
end
else
begin
Result := char(byte(S1) xor (Key shr 8))

Key := (byte(S1) + Key) * C1 + C2

end

end

end;
 
liangzhang3942老大,我知道那些例子,我还有很多例子,我就是要上面那个函数的解密函数。
 
根据你的原理再反过来就行了。
 
这个解密函数应该是这样写的
1、解密结果的长度是33(与原来的密码不相同,但加密的字符串一样就行了。因为长度不一样结果也不一样,所以长度为33就好计算)
2、因为密码的二个byte决定加密后一个byte即密码(11XXXXXXXXX)得到的一定是(cXXXXXXXXXXXXX)

根据上面的规律就可以写出来了
 
这个函数应该没有直接的逆运算,但是可以在最多不超过2^13次计算下得到原始字符串
 
头大了,顶一下!
 
这是base64加密算法
可以用Delphi7中INDY面板中的IdEncoderMIME、IdDecoderMIME这两个控件
 
这个根本不是什么base64加密算法,
如果没猜错的话,这是某个不知名小辈写的一个用于保护本地密码的类似HASH函数的函数,输入一个长度小于等于33位的字符串,得到一个33位定长的字符串.
 
后退
顶部