tea加密算法
一,简介
tea 的全称为”Tiny Encryption Algorithm”,是由剑桥大学计算机实验室的 David Wheeler 和 Roger Needham于1994年发明的加密算法。特点是加密解密速度快,实现简单。
tea 算法明文分组为 64bit(8byte),采用 128bit(16byte) 作为 key,算法采用迭代的形式,推荐的迭代轮数是 64轮,最少 32 轮。
二,算法原理
流程如下
1,初始化:
将明文分成两个32位的块(通常是64位的明文分成两个32位的部分
将128位的密钥分成四个32位的子密钥
2,加密轮数
通常进行32轮加密,每轮使用一个常量DELTA来确保子密钥的独特性
3,每轮加密操作:
在每一轮中,使用以下公式对两个32位的块进行操作:
v0=(v0+((v1<<4)+k0)⊕(v1+sum)⊕((v1>>5)+k1)) mod 232
v1=(v1+((v0<<4)+k2)⊕(v0+sum)⊕((v0>>5)+k3)) mod 232
其中,v0 和 v1是两个32位的块,k0、k1、k2、k3是子密钥,sum是一个累加的常量,每轮增加 DELTA
三,代码实现
1 | from Crypto.Util.number import bytes_to_long, long_to_bytes |
1 |
|