跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
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加密算法
。
搜索
搜索
查看“︁TEA加密算法”︁的源代码
添加话题