首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rijndael算法-解密问题

rijndael算法-解密问题
EN

Stack Overflow用户
提问于 2012-07-30 08:43:09
回答 1查看 338关注 0票数 0

我有这个代码来加密我的文件:

代码语言:javascript
运行
复制
static const char* KEY = "Test";

..。

代码语言:javascript
运行
复制
    FILE* pFile = fopen("skills.dat", "wb+");

char* result = new char[ (TOTAL_SKILLS + 1) * sizeof(int)];
memset(result, 0, (TOTAL_SKILLS + 1) * sizeof(int));


int counter = 0;
while(counter != TOTAL_SKILLS + 1)
{
    char szSkillName[40] = "";
    strcpy(szSkillName,(buffer + (counter * 0x12C)));

    int skillDelay = *(int*)(buffer + (counter * 0x12C) + 228);


    *(int*)(result + (counter * 4)) = skillDelay;

    counter++;
    printf("Skill %s saved.\r\n",szSkillName);
}
CRC4 crc;
crc.Encrypt(result,KEY, (TOTAL_SKILLS + 1) * sizeof(int));

fwrite(result,1, (TOTAL_SKILLS + 1) * sizeof(int),pFile);
fclose(pFile);

buffer的内容可能并不重要,问题是我无法解密加密的数据。显然,我使用的是相同的密钥,但解密后的结果与原始输入缓冲区不同。可能会发生什么?这听起来很奇怪。

解密码:

代码语言:javascript
运行
复制
LPCSTR name = "skills.dat";
    int counter = 0;
std::ifstream myFile(name, std::ios::binary | std::ios::out );

if(myFile.fail())
{
    myFile.close();
    return false;
}

int len = (TOTAL_SKILLS + 1) * sizeof(int);
char* buffer = new char[len];

myFile.read(buffer,len);
myFile.close();

CRC4 crc;
crc.Decrypt(buffer,KEY,len);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-31 10:13:41

我通过删除Encrypt函数和密钥生成散列中的交换宏解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11714220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档