首页 > 解决方案 > Arduino 与普通 C 编译器的不同输出

问题描述

我目前正在 Arduino IDE 上实现 Misty Block Cipher,我遇到了一个奇怪的问题。请记住,我远不是一个称职的编码员。我从 github 页面获取代码,并在在线 C 编译器上编译,它工作得非常好,但在 Arduino 中,输出非常混乱。我试图调试这两个代码并在代码中打印不同的状态,我知道它在哪里搞砸了。

    void misty1_encrypt(unsigned int *expkey, unsigned char *ptext,
    unsigned char *ctext)
 {
 unsigned int D0, D1;
 int i, j = 0;

for (i = 0; i < 32; i++) EK[i] = expkey[i];

D0 = D1 = 0;

for (i = 0; i < 4; i++) {
    D0 = D0 << 8;
    D0 |= ptext[j++];
}
printf("D0 atm:");
printf("%02x",D0);
printf("\n");
for (i = 0; i < 4; i++) {
    D1 = D1 << 8;
    D1 |= ptext[j++];
}

printf("D1 atm:");
printf("%02x",D1);
printf("\n");
}

在 C 编译器中打印上面的代码

    old plaintext1 : 0123456789abcdef
    D0 atm:1234567     
    D1 atm:89abcdef 

但是,在 Arduino 中打印代码时,这就是我得到的

    old plaintext1 : 0123456789abcdef
    D0 atm:4567
    D1 atm:cdef

我不想发布整个代码,所以它不需要 20 页,但值得一提的是,我正在根据 RFC2994 实现来实现它,可以在这里找到:https://www.rfc-editor。 org/rfc/rfc2994

根据我对编码的了解,我觉得问题可能是由于使用了 Unsigned Int,但我使用了 Uint_32t,并且得到了相同的输出。任何帮助将不胜感激。如果帖子有点令人困惑,我很抱歉,我会尽力回答任何可能有帮助的问题。

标签: cencryptionarduinoblock

解决方案


推荐阅读