我在加密文件中的某些数据时遇到问题。我使用简单的异或。 可以说,我有这样的结构:二进制文件加密问题
struct MyFile{
char fileName[128];
int account;
float balance;};
保存这是一个二进制文件工作正常,但是当我使用XOR到文件名的结构进行加密并保存结构为HD然后读取结构和解密的文件名没有正确显示字符。我使用这个简单的函数来加密/解密的目的。
static void Codec(const char *key,int keySize,char* in,char *result,int length)
{
for(int i=0;i<length;i++)
result[i]=in[i]^key[i%keySize];
}
请注意,当我加密文件名并直接解密它在内存中结果是正确的。我错过了什么,为什么它保存在硬盘上时被改变。请提前回复,并提前回复...
您无法真正使用'加密'标签,当询问XOR问题时......任何家伙只需要0.0001秒就可以找出你的'钥匙'。 – 2010-08-03 22:55:57
你是如何编写/阅读文件的?而@ Remus,他似乎在使用一次性键盘,因为他的代码使用了一串键。只要他不重用密钥,这在技术上是安全的。编辑:哦,除非他使用的文件比文件短。然后是的,这将是可笑的容易找出 – Xzhsh 2010-08-03 22:56:30
尝试异或与它的零键 - 是你的算法? – 2010-08-03 23:03:36