admin 管理员组

文章数量: 887017

7行核心代码对任何数据进行军事级别的加密或解密

     TEA(Tiny Encryption Algorithm)算法是一种对称的Feistel加密结构的分组加密算法。由于理想分组加密在实践中的种种困难。Feistel最先提出使用乘积加密的概念来逼近理想的分组加密。乘积加密是指依次使用两个或两个以上基本密码,所得结果的密码强度将强于所有单个密码的强度。这种方法的本质是开发一个分组加密,密钥长为k位,分组长为n位,采用2^k个变换,而不是理想分组密码的(2^n)!个可用变换。


       Feistel建议交替地使用代替和置换。代替和置换的定义如下所述。

  • 代替:每个明文元素或元素组被唯一地替换为相应的密文元素或元素组。
  • 置换:明文元素的序列被替换为该序列的一个置换。也就是说,序列里没有元素被添加、删除或替换,但序列里元素出现的顺序改变了。

混淆和扩散

       实际上,这是Claude Shannon提出的交替使用混淆扩散的乘积加密的实际应用。Shannon引进混淆和扩散这两个术语来刻画任何加密系统的两个基本构件。他关注的是如何挫败基于统计方法的密码分析。他假设攻击者拥有明文统计特征的知识。例如某种人类语言的可读信息,其不同字母的频率分布是已知的。或者已知信息中极有可能出现某些单词或短语。如果这些特征以任何形式体现在密文中,密码分析者就有可能推导出密钥或其一部分,至少是包含确切密钥的一个密钥集,在Shannon所指的强理想加密中,密文所有的统计特征都是独立于所用密钥的。任意替代加密即理想分组加密,就是这样一种加密,不过它是不可能获得实际应用的。


       舍弃对理想系统的追求,Shannon建议了两种对付统计分析的方法:扩散和混淆。扩散就是指使明文的统计特性消散在秘闻中,这可以通过让每个明文数字尽可能地影响多个密文数字获得,等价于说每个密文数字被许多个明文数字影响。扩散的方法是尽可能地使明文和密文间的统计关系变得复杂,以挫败推导出密钥的企图。另一方面,混淆则是尽可能使密文和加密密钥之间的统计关系变得更加复杂,以阻止攻击者发现密钥。

       下图描述了Feistel提出的结构。加密算法的输入是长为2w位的明文分组和密钥K。明文分组被分为等长的两部分:L0和R0.这两半数据经过n轮迭代后组合成密文分组。第i轮迭代的输入Li-1和Ri-1来自于上轮迭代的输出;而输入的子密钥Ki是由整个密钥

本文标签: 7行核心代码对任何数据进行军事级别的加密或解密