【发布时间】:2014-10-24 21:50:38
【问题描述】:
我正在尝试使用加密来反转此解密,但真的很难做到..
unsigned int decrypt(unsigned char *encBuffer, unsigned int encBufferLen, unsigned char *decBuffer)
{
unsigned int decBufferLen = 0;
unsigned char table[] = { NULL, ' ', '-', '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 0x0D };
unsigned int offset = 0, i = 0;
unsigned char encStrLen = 0, c = 0;
while (offset < encBufferLen)
{
if (encBuffer[offset] == 0xFFU) // if byte is 0xFF then add 0x0D to new buffer and continue
{
*(decBuffer + decBufferLen++) = 0x0D;
offset++;
continue;
}
encStrLen = encBuffer[offset++]; // get string length
i = 0;
if ((encStrLen & 0x80U) == 0) // if result is 0 then decrypt the string by Xor 33
{
while ((i++ < encStrLen) && (offset < encBufferLen))
{
*(decBuffer + decBufferLen++) = (encBuffer[offset++] ^ 0x33U);
}
}
else // otherwise
{
encStrLen &= 0x7FU;
while ((i < encStrLen) && (offset < encBufferLen))
{
c = encBuffer[offset++]; // c = current byte, increment the index
*(decBuffer + decBufferLen++) = (table[(c & 0xF0U) >> 4]);
if (table[c & 0x0FU] != NULL)
{
*(decBuffer + decBufferLen++) = table[c & 0x0FU];
}
i += 2;
}
}
}
return decBufferLen;
}
这是我经过一些测试后得到的
std::vector<unsigned char> encrypt(std::vector<unsigned char> decryptedBuf)
{
std::vector<unsigned char> vector;
unsigned int offset = 0, decryptedStringLength = 0;
unsigned char currentByte = 0;
while (offset < decryptedBuf.size())
{
if (decryptedBuf[offset] == 0x0D)
{
vector.push_back(0xFF);
offset++;
continue;
}
decryptedStringLength = decryptedBuf.size() - 1; // <--- to edit if encrypt works
vector.push_back(decryptedStringLength); // <--- i'm not sure it will be interpreted right
if (decryptedStringLength < 0x80) // < '128' Xor 33 http://pastebin.com/b18JfBFK
{
for (unsigned int i = 0; i < decryptedStringLength; i++)
vector.push_back(decryptedBuf[offset++] ^ 0x33);
}
else // >= '128' Table
{
decryptedStringLength -= 0x80; // & 0x7F http://pastebin.com/THZjZJfs
for (unsigned int i = 0; i < decryptedStringLength; i += 2)
{
currentByte = decryptedBuf[offset++];
}
}
}
return vector;
}
你知道如何扭转它吗?!我正在尝试 2 天,但我没有任何工作..
【问题讨论】:
-
-1,代码太多。您应该尽可能少地发布代码。
-
问题是什么?
-
@ntoskrnl 你知道如何扭转它吗?
标签: c++ encryption cryptography reverse