BTEA算法C语言实现
来源:互联网 发布:韩日军力对比知乎 编辑:程序博客网 时间:2024/04/25 15:18
#include <iostream>#include <stdio.h>using namespace std;#include <stdint.h>#define DELTA 0x9e3779b9#define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^ z))) void btea(uint32_t *v, int n, uint32_t const key[4]) { uint32_t y, z, sum; unsigned p, rounds, e; if (n > 1) { /* Coding Part */ rounds = 6 + 52/n; sum = 0; z = v[n-1]; do { sum += DELTA; e = (sum >> 2) & 3; for (p=0; p<n-1; p++) { y = v[p+1]; z = v[p] += MX; } y = v[0]; z = v[n-1] += MX; } while (--rounds); } else if (n < -1) { /* Decoding Part */ n = -n; rounds = 6 + 52/n; sum = rounds*DELTA; y = v[0]; do { e = (sum >> 2) & 3; for (p=n-1; p>0; p--) { z = v[p-1]; y = v[p] -= MX; } z = v[n-1]; y = v[0] -= MX; } while ((sum -= DELTA) != 0); } }int main(){ uint32_t const key[4]={0x01234567,0x89ABCDEF,0xFEDCBA98,0x76543210}; uint32_t data[2]={0x12345678,0x87654321}; uint32_t *sent=data; btea(sent,2,key); printf("coded:%x %x\n",sent[0],sent[1]); btea(sent,-2,key); printf("decoded:%x %x\n",sent[0],sent[1]); return 0;}
0 0
- BTEA算法C语言实现
- C语言实现银行家算法
- C语言实现递归算法
- C语言实现MD5算法!
- 排序算法(C语言实现)
- CRC16算法实现(C语言)
- KMP算法c语言实现
- C语言实现哈弗曼算法
- Levenshtein 算法c语言实现
- C语言冒泡算法实现
- IDEA算法c语言实现
- BM算法C语言实现
- MD5算法 C语言 实现
- dijstra算法 c语言实现
- C语言实现DES算法
- C语言实现PID算法
- CRC_8 算法实现 C语言
- C语言实现MD5算法
- Bash data exfiltration through DNS (using bash builtin functions)
- 字串统计
- Spring——IOC(四)
- The Unique MST(次小生成树问题)
- 进入centos命令行的方式
- BTEA算法C语言实现
- 【IOS学习笔记(一)】IOS中.h和.m文件中的变量和方法
- 【操作系统】1、操作系统概述
- Java虚拟机(二):Java常见内存溢出异常分析
- Android 垂直滚动条
- (转)C++笔记(1)explicit 只对构造函数起作用,用来抑制隐式转换。
- Linux Kernel Security (SELinux vs AppArmor vs Grsecurity)
- 45种Javascript技巧大全
- POJ1733---Parity game