我試圖建立一個網站和Arduino之間的通信。我需要認證從我的網站到Arduino的所有消息,所以我發現使用XTEA加密技術的時間更少。爲網站PHP中的XTEA加密和C中的解密
我的PHP的代碼是:
mcrypt_encrypt(MCRYPT_XTEA, 'qwertyuiasdfghjk', 'asdfasdf', MCRYPT_MODE_ECB);
其中 「qwertyuiasdfghjk」 是128個比特 鍵和 「asdfasdf」 是一個64個比特 消息。
在Arduino的側面我使用:
void _xtea_dec(void* dest, const void* v, const void* k)
{
uint8_t i;
uint32_t v0=((uint32_t*)v)[0], v1=((uint32_t*)v)[1];
uint32_t sum=0xC6EF3720, delta=0x9E3779B9;
for(i=0; i<32; i++)
{
v1 -= ((v0 << 4^v0 >> 5) + v0)^(sum + ((uint32_t*)k)[sum>>11 & 3]);
sum -= delta;
v0 -= ((v1 << 4^v1 >> 5) + v1)^(sum + ((uint32_t*)k)[sum & 3]);
}
((uint32_t*)dest)[0]=v0; ((uint32_t*)dest)[1]=v1;
}
其中的參數:
char dest[9]; //Destination
char v[9]; //Encrypted message
char k[17]; //Key
但我解密的消息是遠離原始消息......它仍然有64個 位,但它完全不同...
我該怎麼辦?
(這是我第一次在這裏提出一個問題,平時我我所有的問題都在堆棧溢出 解決某處...)
是的!我遵循你的建議,並最終它的作品! – uDalillu 2012-04-13 19:06:27