首页
随机
最近更改
特殊页面
社群首页
参数设置
关于WHY42
免责声明
WHY42
搜索
用户菜单
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁TEA加密算法”︁的源代码
←
TEA加密算法
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
TEA(Tiny Encryption Algorithm)算法由剑桥大学计算机实验室的David Wheeler和Roger Needham于1994年发明。它是一种分组密码算法,其明文密文块为64比特,密钥长度为128比特。TEA算法利用不断增加的Delta(黄金分割率)值作为变化,使得每轮的加密是不同,该加密算法的迭代次数可以改变,建议的迭代次数为32轮。 <source lang="cpp"> #include <inttypes.h> #define CYCLE_TIMES_ 32 static void encrypt(uint32_t *v, uint32_t *k) { uint32_t y = v[0], z = v[1], sum = 0, i; /* set up */ uint32_t delta = 0x9e3779b9; /* a key schedule constant */ uint32_t a = k[0], b = k[1], c = k[2], d = k[3]; /* cache key */ for (i = 0; i < CYCLE_TIMES_; i++) { /* basic cycle start */ sum += delta; y += ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b); z += ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d); /* end cycle */ } v[0] = y; v[1] = z; } static void decrypt(uint32_t *v, uint32_t *k) { uint32_t y = v[0], z = v[1], sum = 0xC6EF3720, i; /* set up */ uint32_t delta = 0x9e3779b9; /* a key schedule constant */ uint32_t a = k[0], b = k[1], c = k[2], d = k[3]; /* cache key */ for (i = 0; i < CYCLE_TIMES_; i++) { /* basic cycle start */ z -= ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d); y -= ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b); sum -= delta; /* end cycle */ } v[0] = y; v[1] = z; } </source> 需要注意的是,加密时要不足8位的要补齐。 [[Category:Algorithm]]
返回
TEA加密算法
。