首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C xor结果与javascript xor不同

C xor结果与javascript xor不同
EN

Stack Overflow用户
提问于 2013-09-12 19:20:12
回答 2查看 170关注 0票数 0

我正在尝试用c语言做一些xor文件加密,用javascript解密(使用this作为基础,现在我被以下问题困扰了:

例如,我想用C语言做73^122,结果是57,但在javascript中同样的操作会产生51。为什么会发生这种情况,修复它的正确方法是什么?

下面是一些加密函数的C代码

代码语言:javascript
复制
void encrypt_data(FILE* input_file, FILE* output_file, char* key)
{
  int key_count = 0; //Used to restart key if strlen(key) < strlen(encrypt)
  int encrypt_byte;

  while( (encrypt_byte = fgetc(input_file)) != EOF) //Loop through each byte of file until EOF
  {
    //XOR the data and write it to a file
    fputc(encrypt_byte ^ key[key_count], output_file);
    printf("original %d\n", encrypt_byte); //yields 73
    printf("xoring with %d\n", key[key_count]); // yields 122
    printf("xored %d\n", encrypt_byte ^ key[key_count]); // yields 57
    break; //breaking just for example purpose

    //Increment key_count and start over if necessary
    key_count++;
    if(key_count == strlen(key))
        key_count = 0;
  }
}
EN

回答 2

Stack Overflow用户

发布于 2013-09-12 19:24:29

我真的很怀疑你提到的C语言的结果。你应该展示一些代码。

你的右边超过8位有点奇怪,通常对于C语言的异或加密,你会一次做一个char,这实际上意味着8位字节。

您有没有可能混淆了十六进制(0x730x122)和十进制(73122)数字文字?再说一次,当你没有展示你的代码时,很难帮助你。

票数 1
EN

Stack Overflow用户

发布于 2013-09-12 19:28:54

当我运行时:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    printf("%d\n", 73^122);
}

我得到了:

代码语言:javascript
复制
51

你能给我们看一下有问题的C代码吗,我们就可以给你看bug了。

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

https://stackoverflow.com/questions/18762822

复制
相关文章

相似问题

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