console.log(欢迎来到nyyydddn的博客呀|

nyyyddddn

园龄:3年11个月粉丝:9关注:12

tea&xtea加解密函数模板(c语言)

tea和xtea的核心在v0的状态是根据v1和sum来更新的,v1的状态是根据v0和sum来更新的,ctf中经常遇到各种变种的tea xtea,可能是修改了delta,或者是更改了v0 v1更新的方式,或者是修改了更新的轮数,编写decrypt方式都大同小异,可以根据下面的模板来修改

xtea在tea的基础上,取k的时候使用k[] 这种方式动态的取key,感觉是为了使每次更新v0 v1更随机

tea的实现

void teacrypt(uint32_t* v,uint32_t* k) {
    uint32_t v0 = v[0], v1 = v[1], sum = 0, i;
    uint32_t delta = 0x9e3779b9;
    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];
    for (i = 0; i < 32; i++)
    {
        sum += delta;
        v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
        v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);

    }
    v[0] = v0; v[1] = v1;
}

void teadecrypto(uint32_t* v, uint32_t* k) {
    uint32_t v0 = v[0], v1 = v[1], sum = 0xc6ef3720, i;
    uint32_t delta = 0x9e3779b9;
    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];
    for (i = 0; i < 32; i++)
    {
        v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
        v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
        sum -= delta;
    }
    v[0] = v0; v[1] = v1;
}

xtea的实现

void xteacrypt(uint32_t *v, uint32_t *k) {
    uint32_t v0 = v[0], v1 = v[1];
    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];

    int sum = 0, delta = 0x9e3779b9;

    for (size_t i = 0; i < 32; i++)
    {
        v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
        sum += delta;
        v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]);
    }
    v[0] = v0; v[1] = v1;
}

void xteadecrypt(uint32_t* v, uint32_t* k) {

    uint32_t v0 = v[0], v1 = v[1];
    uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];

    int sum = 0x9e3779b9 * 32, delta = 0x9e3779b9;

    for (size_t i = 0; i < 32; i++)
    {

        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum >> 11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    }
    v[0] = v0; v[1] = v1;
}

本文作者:nyyyddddn

本文链接:https://www.cnblogs.com/nyyyddddn/p/17787505.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   nyyyddddn  阅读(96)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found Reol
  2. 2 No title Reol
  3. 3 平面鏡 Reol
  4. 4 アスノヨゾラ哨戒班 Reol
  5. 5 Fallen EGOIST
No title - Reol
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

ずっと夢見てた僕になれたかな

とうに帰れないとこまで来たみたい

自分の足で二段飛ばしてそうもっと

先へ駆けていけるはずだから ran away

深くなる傷を縫い付け

繋ぐパス軸に廻りだす

慣れた痛み、焦る呼吸とビート

気付かないふりしてまた一人

何が正当?ないな永劫

誰が間違った対価払うの

あんたが嫌いなあいつはきっとただ

「それだけ」で不正解なんだ

0点だって提言したって全然納得できない理由も

最前線はいつだってここだった

最善策は最初からなかった

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

幼い頃から

幼い頃から

気付いたら傍にいた

まるで空気のようだ

僕は君とぎゅっと手を繋いで

楽しいことも涙も

僕は君に話して聞かせた

僕を笑う人や貶す声が聞こえぬように君は歌った

この声を君が受信

また夜毎投影されてく憂い

使い捨てだっていって腐っても

止まらないハイファイ、ツァイトガイスト

一周巡る間のたった一瞬だけでも交わる鼓動、音、繋ぐ色

次は僕が君に歌歌うから

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

いつか君に届くかな

いやそんな日はきっと来ないだろうな

声も体も持たぬ君に

救われた何億人の一人

赤青合わせ彩った音で世界が溢れた

巡り巡り出会ったこの音を聴くすべてが

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく

緩やかに崩れ壊れてく

ゆるりゆるり首を絞めるように

昨日までの僕が殺されていく

緩やかに離れ離れ飽く

ぐらりんり君にきこえるのは

僕が知らない声になってく