0

我正在从文件转移到 MYSQL,我想使用 md5 而不是加密

public Encrypt(string[])
{
 for(new x=0; x < strlen(string); x++)
   {
    string[x] += (3^x) * (x % 15);
    if(string[x] > (0xff))
    {
     string[x] -= 256;
    }
   }
 return 1;
}

但我需要解密它。我不知道如何制作解密功能。有谁能够帮我?

4

2 回答 2

1

我对 PAWN 的理解是它使用以空字符结尾的字符串。如果是这种情况,那么这种加密通常不是一个可逆的过程。

考虑一个字符串,其中第十三个字符(字符串 [12])是“L”。将添加到该偏移量的偏移量为(3^12) * (12 % 15)180。在 ASCII 中,字符“L”的值为 76,当添加到 180 时为 256。换行以适应 0-255 字符范围后变为零,可能会在中间某处终止您的加密字符串。

如果您单独存储原始字符串的长度或者它始终是固定长度,那么这可能不是问题。但是,如果您依靠空终止符来确定字符串的长度,那么它就行不通了。

于 2013-07-14T15:34:06.650 回答
0

看起来“加密”为每个字符添加了一个从其位置派生的数字。可以通过减去相同的数字来撤消加密。

public Decrypt(string[])
{
 for(new x=0; x < strlen(string); x++)
   {
    string[x] -= (3^x) * (x % 15);
    if(string[x] < (0x00))
    {
     string[x] += 256;
    }
   }
 return 1;
}
于 2013-07-14T14:57:55.573 回答