tea算法c
‘壹’ C表示什么
C在数学及计算机科学中,表示十六进制的12
MS-DOS(2.0或以后版本)及微软视窗作业系统称第一个实体硬盘上的可开机(active)主分割中的逻辑磁盘为“C:”或“c:”,系统档案都是分别放在此磁盘的DOS、Windows或Winnt子目录中
大写C代表
在化学中,表示碳的化学符号
在乐理中,表示:
音阶中的C音
调号中于C音开始的音乐的C大调及C小调
拍子记号中的4/4拍子
在罗马数字中表示100
在国际单位制的电荷中表示库仑
在计算机科学中,有C语言、C++、C#、Objective-C等
在营养学中,表示维生素C
在生物化学中,表示胞嘧啶,是构成DNA的四种核苷酸结构之一
在物理学中,表示电容
在数学中,表示:
复数
不定积分解之常数项
圆周
在机率中,组合会以C表示。
在对称元素中,C表示旋转轴。
字母c的发展史
1.5V干电池的标准尺寸之一
温度的单位摄氏(℃)
在宝石学中,钻石的鉴定标准简称“4C”,分别代表切割(Cut)、色泽(Colour)、净度(Clarity)和重量(Carat)
在电子商贸术语中,有C2C、B2C等的交易形式,C表示“Consumer”
在印刷四分色模式(CMYK)中,表示青色(Cyan)
在桥牌的叫牌过程中,C表示梅花牌(Club),如“2梅花”记作“2C”
在评核制度中,C表示“常”
在DVD及数位电视中,CC代表隐藏字幕(Closed Caption)。
小写c代表
在物理学中,代表真空中的光速,为299,792,458米每秒
在小写字母中划一竖线表示“分”(货币),
在国际单位制词头,c表示centi,即一百分之一(10-2)
在小写字母外围划一圆圈:©表示版权所有
在代数学中,常表示常数
在几何学中,表示截距(intercept)
在文件或电子邮件上,cc表示“副本抄送”
在度量衡中,cc是“立方厘米”(cubiccentimetre)的缩写
在无线电通话中,字母C,拼写为:Charlie。发音:CHAR LEE 或者 SHAR LEE
其他
在网络语言中,c经常被用来替代“see”,如“ic”即“I see”,“cu”即“see you”
在香港的茶餐厅中 ,侍应常将“冻”(Cold)省作“C”。例如“C0T”即“冻、柠(零)、茶(TEA)”。
英语
音标: [si:]
1. 英语字母中的第三个字母,大写为C,小写为c
2. (用大写C)丙等(成绩)
3.可数名词, 用[C]表示=countable noun (oppo.相对应的,不可数名词用[U]表示=uncountable noun)
数学
1.表示图形周长。
例:正方形周长公式:c=4a
圆周长公式:C=πd
=2πR
2.大写C表示复数(complex number)集合
3. 表示组合数
=n(n-1)(n-2)…(n-m +1)/m!=n!/(m!(n-m)!)[2]
物理
1.电学:物理量--电容单位--库仑(电量)。
2.电磁波传播速度:c= (299 792 458±1) m/s(光波是属于电磁波的一种,所以光速也为c)。
3.电容器(或电容, capacitor,condenser)由两片接近并相互绝缘的导体制成的电极组成的储存电荷和电能的器件;在电路中用字母 C 表示。
4.电池放电倍率:电池的放电倍率是指电池在规定的时间内放出其额定容量时所需要的电流值,它在数据值上等于电池额定容量的倍数,通常以字母C表示。
5.比热容。
化学
概述:科技名词定义,中文名称:碳英文名称:carbon,符号C,元素周期表中第6种元素
1.C:碳元素 Carbon; 一个碳原子(原子序数:6;相对原子质量:12.01)
常见C化合价+2,+4
折射率:
2.417 (钻石)
比热容:J /(mol· K)
(graphite) 8.517
导电性:10^6/(cm ·Ω )
0.00061
导热系数:W/(m·K)
(graphite) 119-165
汽化热:(千焦/摩尔)
355.80
元素在宇宙中的含量:(ppm)
5000
2.c:物质的量浓度(单位:mol/L)
工业
碳(C) :钢中含碳量增加,屈服点和抗拉强度升高,但塑性和冲击性降低,当碳量超过0.23%时,钢的焊接性能变坏,因此用于焊接的低合金结构钢,含碳量一般不超过0.20%。碳量高还会降低钢的耐大气腐蚀能力,在露天料场的高碳钢就容易腐蚀,此外,碳能增加钢的冷脆性和实效敏感性。
生物
1.Cytosine的简称,即胞嘧啶。
2.半胱氨酸(Cysteine)的简称。
3.维生素C,抗坏血酸。
其他解释
1.唱名:多指do
2.调名:C大调 or c小调
3.技能快捷键,如所谓“大便”:出自魔兽争霸3中死亡骑士的技能——死亡缠绕(DeathCoil)(快捷键为C)。
4.Windows中,一般情况下复制的快捷键为Ctrl+C。相对地,粘贴的快捷键是Ctrl+V。
5.中国火车车次中代表城际特快旅客列车。
6.网络语言是操、插楼的意思。
7.形容词,c即cissy,而cissy=sissy,sissy意为柔弱或怯弱的男孩、女孩子气的男孩 很c的boy,就是指娘娘腔的boy。
8.组合,C即Combination,数学概率统计相关的一种算法(详见组合数)。
9.地质学:石炭纪
10.在美国空军中,大写C代表军用运输机(carrier)。
13.LOL、DOTA中Carry的简称。这一位置在队伍中担当指挥,输出等极重要任务。
14.代表诺基亚(Nokia)手机中"C"系列的手机,此系列手机的前缀名。如:C7-00,C5-03等。
15.在网络语言中,c经常被用来替代“see”,如“ic”即“I see”,“cu”即“see you”
16.在香港的茶餐厅中,侍应常将“冻”(Cold)省作“C”。例如“C0T”即“冻、柠(零)、茶(TEA)”。
17.游戏评级:在日本的游戏分级制度CERO中,C级指代15岁以上对象(对应年龄)。
‘贰’ 什么是TEA算法
TEA算法被广泛地应用于计算机数据加密领域,OICQ的数据安全采用了TEA算法。本文讨论了TEA的算法的原理及实现,并揭示了QQ中该算法的应用,本文是灵钥科技公司(www.panakes.com)在即时通信密码研究公开的第一篇论文,今后我们将陆续发表相关的论文及相应的产品。
TEA算法简介
TEA算法是由剑桥大学计算机实验室的DavidWheeler和RogerNeedham于1994年发明.TEA是TinyEncryptionAlgorithm的缩写。特点是加密速度极快,高速高效,但是抗差分攻击能力差。
TEA加密算法是一种分组密码算法,其明文密文块64比特(8字节),密钥长度128比特(16字节)。TEA加密算法的迭代次数可以改变,建议的迭代次数为32轮,尽管算法的发明人强调加密16轮就很充分了。两个TEAFeistel周期算为一轮。图1示例了TEA一轮的加密流程。
以下示例了TEA的C语言加密算法,TEA的解密算法与加密算法类似。
#defineTEA_ROUNDS0x20
#defineTEA_DELTA0x9E3779B9
#defineTEA_SUM0xE3779B90
voidtiny_encrypt(unsignedlong*constv,unsignedlong*constw,
constunsignedlong*constk)
{
registerunsignedlong
y=v[0],
z=v[1],
a=k[0],
b=k[1],
c=k[2],
d=k[3],
n=TEA_ROUNDS,
sum=0,
delta=TEA_DELTA;
while(n-->0){
sum+=delta;
y+=(z<<4)+a^z+sum^(z>>5)+b;
z+=(y<<4)+c^y+sum^(y>>5)+d;
}
w[0]=y;
w[1]=z;
}
TEA算法利用的不断增加的(即源程序中的delta)值作为变化,,就是黄金分割率。它的作用是使得每轮的加密是不同。的准确值可能不太重要。但是在这里,它被初始化为
=0x9e3779b
QQ是如何利用TEA进行加密的?
TEA算法被广泛应用于QQ的数据加密中,QQ采用16轮的TEA算法加密,在这时采取16轮加密时而不采取标准的32轮加密时为了减少验证服务器的压力。QQ在数据加密前采用了密码学中的常用的填充及交织技术,减少加密数据的相关性,增加破译者的破解难度。
下表列出了QQ应用TEA算法几个方面
序号
应用
相关文件
1
通讯报文的加密/解密
2
消息记录的加密/解密
MsgEx.db
3
本地消息密码、首次登录时间、提示内容验证密码
Matrix.db
4
消息备份文件
*.bak
QQ的TEA算法源程序分析
QQ在进行TEA加密前采用ntohl函数对原文数据和加密密钥进行了变换,从网络字节顺序转换位主机字节顺序进行加密后,再通过htonl函数将数据转换为网络字节顺序的数据。
为什么要这样做呢?因为不同的计算机使用不同的字节顺序存储数据。因此任何从Winsock函数对IP地址和端口号的引用和传给Winsock函数的IP地址和端口号均时按照网络顺序组织的。
为防止分析者分析出QQ是采用TEA加密算法的,程序的设计者采用了subeax,61C88647h指令,而不采用Addeax9e3779b9h指令。因为分析者只需要判断9e3779b9h(即是我们前面提的黄金分割率的值)就知道采用了TEA加密算法。
sub_409A43procnear;CODEXREF:sub_409B8C+AEp
;sub_409B8C+109p...
var_10=dwordptr-10h
var_C=dwordptr-0Ch
var_8=dwordptr-8
var_4=dwordptr-4
arg_0=dwordptr8
arg_4=dwordptr0Ch
arg_8=dwordptr10h
pushebp
movebp,esp
subesp,10h
pushebx
pushesi
movesi,[ebp+arg_0]
pushedi
pushdwordptr[esi];netlong
callntohl
pushdwordptr[esi+4];netlong
movedi,eax;y
callntohl
movebx,eax;z
moveax,[ebp+arg_4]
leaecx,[ebp+var_10]
leaesi,[ebp+var_10]
subeax,ecx
mov[ebp+arg_0],4
mov[ebp+arg_4],eax
jmpshortloc_409A7C
;哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
.text:00409A79
loc_409A79:;CODEXREF:sub_409A43+49j
moveax,[ebp+arg_4]
loc_409A7C:;CODEXREF:sub_409A43+34j
pushdwordptr[eax+esi];netlong
callntohl;对k[0],k[1],k[2],k[3]进行ntohl变化,
mov[esi],eax
addesi,4
dec[ebp+arg_0]
jnzshortloc_409A79
push10h;做十六轮TEA运算
xoreax,eax
popecx
loc_409A93:;CODEXREF:sub_409A43+88j
movedx,ebx
movesi,ebx
shredx,5;z>>5
addedx,[ebp+var_C];z>>5+k[1]
subeax,61C88647h;sum=sum+deltadelta:0x9e3779b9
shlesi,4;z<<4
addesi,[ebp+var_10];z<<4+k[0]
xoredx,esi;(z>>5+k[1])^(z<<4+k[0])
leaesi,[eax+ebx];sum+z
xoredx,esi;(z<<4+k[0])^(sum+z)^(z>>5+k[1])
addedi,edx;y+=(z<<4+k[0])^(sum+z)^(z>>5+k[1])
movedx,edi
movesi,edi
shredx,5;y>>5
addedx,[ebp+var_4];y>>5+k[3]
shlesi,4;y<<4
addesi,[ebp+var_8];y<<4+k[2]
xoredx,esi;(y>>5+k[3])^(y<<4+k[2])
leaesi,[eax+edi];(sum+y)
xoredx,esi;(y<<4+k[2])^(sum+y)^(y>>5+k[3])
addebx,edx;z+=(y<<4+k[2])^(sum+y)^(y>>5+k[3])
dececx
jnzshortloc_409A93
pushedi;hostlong
callhtonl
movesi,[ebp+arg_8]
pushebx;hostlong
mov[esi],eax;加密结果
callhtonl
mov[esi+4],eax;加密结果
popedi
popesi
popebx
leave
retn
sub_409A43endp
结论
作为一种分组加密算法,TEA加密算法在其发展的过程中,目前出现了几种针对TEA算法设计的缺陷攻击方法,使得原有的TEA加密算法变得不安全,在过去的十几年中,TEA算法进行了若干次的改进,历经XTEA,BlockTEA,XXTEA几个版本。目前最新的算法是XXTEA。
QQ采用了最初的TEA算法做其核心的加密算法,QQ在采用TEA算法时采用了16轮的加密,其加密复杂度比32轮减了许多。利用TEA算法的设计缺陷,使得快速破解QQ密码成为可能。
值得一提的QQ在利用TEA算法做加密时,采用了交织及随机填充随机数的技术,增加了密码分析者分析难度,从一定程度上保护了信息的安全。
更多信息请访问www.panakes.com
TEA(Tiny Encryption Algorithm) 是一种优秀的数据加密算法,虽然它比 DES(Data Encryption Standard) 要简单得多, 但有很强的抗差分分析能力,加密速度也比 DES 快得多,而且对 64 位数据加密的密钥长达 128 位,安全性相当好。 下面的程序来自卢开澄《计算机密码学》(清华大学出版社)。
补充:为了使这段程序更加实用,我将其整理为几个单元, 分别用于 Delphi 和 C++Builder 。包括对数据流 TMemoryStream 和字符串的加密/解密功能, 对字符串的加密/解密还通过 Base64 编码/解码,保持加密后的字符串仍为字符串。
// v[2] : 64bit data, k[4] : 128bit key
void encipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;
while ( n-- > 0 )
{
sum += delta;
y += ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
z += ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
}
v[0] = y;
v[1] = z;
}
void decipher( unsigned long * const v, const unsigned long * const k )
{
register unsigned long y = v[0], z = v[1], sum = 0xC6EF3720, delta = 0x9E3779B9,
a = k[0], b = k[1], c = k[2], d = k[3], n = 32;
// sum = delta << 5, in general sum = delta * n
while ( n-- > 0 )
{
z -= ( y << 4 ) + c ^ y + sum ^ ( y >> 5 ) + d;
y -= ( z << 4 ) + a ^ z + sum ^ ( z >> 5 ) + b;
sum -= delta;
}
v[0] = y;
v[1] = z;
}
‘叁’ 密码学的学科分类
Autokey密码
置换密码
二字母组代替密码 (by Charles Wheatstone)
多字母替换密码
希尔密码
维吉尼亚密码
替换式密码
凯撒密码
摩尔斯电码
ROT13
仿射密码
Atbash密码
换位密码
Scytale
Grille密码
VIC密码 (一种复杂的手工密码,在五十年代早期被至少一名苏联间谍使用过,在当时是十分安全的)
流密码
LFSR流密码
EIGamal密码
RSA密码
对传统密码学的攻击
频率分析
重合指数
经典密码学
在近代以前,密码学只考虑到信息的机密性(confidentiality):如何将可理解的信息转换成难以理解的信息,并且使得有秘密信息的人能够逆向回复,但缺乏秘密信息的拦截者或窃听者则无法解读。近数十年来,这个领域已经扩展到涵盖身分认证(或称鉴权)、信息完整性检查、数字签名、互动证明、安全多方计算等各类技术。
古中国周朝兵书《六韬.龙韬》也记载了密码学的运用,其中的《阴符》和《阴书》便记载了周武王问姜子牙关于征战时与主将通讯的方式: 太公曰:“主与将,有阴符,凡八等。有大胜克敌之符,长一尺。破军擒将之符,长九寸。降城得邑之符,长八寸。却敌报远之符,长七寸。警众坚守之符,长六寸。请粮益兵之符,长五寸。败军亡将之符,长四寸。失利亡士之符,长三寸。诸奉使行符,稽留,若符事闻,泄告者,皆诛之。八符者,主将秘闻,所以阴通言语,不泄中外相知之术。敌虽圣智,莫之能识。”
武王问太公曰:“… 符不能明;相去辽远,言语不通。为之奈何?”
太公曰:“诸有阴事大虑,当用书,不用符。主以书遗将,将以书问主。书皆一合而再离,三发而一知。再离者,分书为三部。三发而一知者,言三人,人操一分,相参而不相知情也。此谓阴书。敌虽圣智,莫之能识。” 阴符是以八等长度的符来表达不同的消息和指令,可算是密码学中的替代法(en:substitution),把信息转变成敌人看不懂的符号。至于阴书则运用了移位法,把书一分为三,分三人传递,要把三份书重新拼合才能获得还原的信息。
除了应用于军事外,公元四世纪婆罗门学者伐蹉衍那(en:Vatsyayana) 所书的《欲经》4 中曾提及到用代替法加密信息。书中第45项是秘密书信(en:mlecchita-vikalpa) ,用以帮助妇女隐瞒她们与爱郞之间的关系。其中一种方法是把字母随意配对互换,如套用在罗马字母中,可有得出下表: A B C D E F G H I J K L M Z Y X W V U T S R Q P O N 由经典加密法产生的密码文很容易泄漏关于明文的统计信息,以现代观点其实很容易被破解。阿拉伯人津帝(en:al-Kindi)便提及到如果要破解加密信息,可在一篇至少一页长的文章中数算出每个字母出现的频率,在加密信件中也数算出每个符号的频率,然后互相对换,这是频率分析的前身,此后几乎所有此类的密码都马上被破解。但经典密码学仍未消失,经常出现在谜语之中(见en:cryptogram)。这种分析法除了被用在破解密码法外,也常用于考古学上。在破解古埃及象形文字(en:Hieroglyphs)时便运用了这种解密法。 标准机构
the Federal Information Processing Standards Publication program (run by NIST to proce standards in many areas to guide operations of the US Federal government; many FIPS Pubs are cryptography related,ongoing)
the ANSI standardization process (proces many standards in many areas; some are cryptography related,ongoing)
ISO standardization process (proces many standards in many areas; some are cryptography related,ongoing)
IEEE standardization process (proces many standards in many areas; some are cryptography related,ongoing)
IETF standardization process (proces many standards (called RFCs) in many areas; some are cryptography related,ongoing)
See Cryptography standards
加密组织
NSA internal evaluation/selections (surely extensive,nothing is publicly known of the process or its results for internal use; NSA is charged with assisting NIST in its cryptographic responsibilities)
GCHQ internal evaluation/selections (surely extensive,nothing is publicly known of the process or its results for GCHQ use; a division of GCHQ is charged with developing and recommending cryptographic standards for the UK government)
DSD Australian SIGINT agency - part of ECHELON
Communications Security Establishment (CSE) - Canadian intelligence agency.
努力成果
the DES selection (NBS selection process,ended 1976)
the RIPE division of the RACE project (sponsored by the European Union,ended mid-'80s)
the AES competition (a 'break-off' sponsored by NIST; ended 2001)
the NESSIE Project (evaluation/selection program sponsored by the European Union; ended 2002)
the CRYPTREC program (Japanese government sponsored evaluation/recommendation project; draft recommendations published 2003)
the Internet Engineering Task Force (technical body responsible for Internet standards -- the Request for Comment series: ongoing)
the CrypTool project (eLearning programme in English and German; freeware; exhaustive ecational tool about cryptography and cryptanalysis)
加密散列函数 (消息摘要算法,MD算法)
加密散列函数
消息认证码
Keyed-hash message authentication code
EMAC (NESSIE selection MAC)
HMAC (NESSIE selection MAC; ISO/IEC 9797-1,FIPS and IETF RFC)
TTMAC 也称 Two-Track-MAC (NESSIE selection MAC; K.U.Leuven (Belgium) & debis AG (Germany))
UMAC (NESSIE selection MAC; Intel,UNevada Reno,IBM,Technion,& UCal Davis)
MD5 (系列消息摘要算法之一,由MIT的Ron Rivest教授提出; 128位摘要)
SHA-1 (NSA开发的160位摘要,FIPS标准之一;第一个发行发行版本被发现有缺陷而被该版本代替; NIST/NSA 已经发布了几个具有更长'摘要'长度的变种; CRYPTREC推荐 (limited))
SHA-256 (NESSIE 系列消息摘要算法,FIPS标准之一180-2,摘要长度256位 CRYPTREC recommendation)
SHA-384 (NESSIE 列消息摘要算法,FIPS标准之一180-2,摘要长度384位; CRYPTREC recommendation)
SHA-512 (NESSIE 列消息摘要算法,FIPS标准之一180-2,摘要长度512位; CRYPTREC recommendation)
RIPEMD-160 (在欧洲为 RIPE 项目开发,160位摘要;CRYPTREC 推荐 (limited))
Tiger (by Ross Anderson et al)
Snefru
Whirlpool (NESSIE selection hash function,Scopus Tecnologia S.A. (Brazil) & K.U.Leuven (Belgium))
公/私钥加密算法(也称 非对称性密钥算法)
ACE-KEM (NESSIE selection asymmetric encryption scheme; IBM Zurich Research)
ACE Encrypt
Chor-Rivest
Diffie-Hellman(key agreement; CRYPTREC 推荐)
El Gamal (离散对数)
ECC(椭圆曲线密码算法) (离散对数变种)
PSEC-KEM (NESSIE selection asymmetric encryption scheme; NTT (Japan); CRYPTREC recommendation only in DEM construction w/SEC1 parameters) )
ECIES (Elliptic Curve Integrated Encryption System; Certicom Corp)
ECIES-KEM
ECDH (椭圆曲线Diffie-Hellman 密钥协议; CRYPTREC推荐)
EPOC
Merkle-Hellman (knapsack scheme)
McEliece
NTRUEncrypt
RSA (因数分解)
RSA-KEM (NESSIE selection asymmetric encryption scheme; ISO/IEC 18033-2 draft)
RSA-OAEP (CRYPTREC 推荐)
Rabin cryptosystem (因数分解)
Rabin-SAEP
HIME(R)
XTR
公/私钥签名算法
DSA(zh:数字签名;zh-tw:数位签章算法) (来自NSA,zh:数字签名;zh-tw:数位签章标准(DSS)的一部分; CRYPTREC 推荐)
Elliptic Curve DSA (NESSIE selection digital signature scheme; Certicom Corp); CRYPTREC recommendation as ANSI X9.62,SEC1)
Schnorr signatures
RSA签名
RSA-PSS (NESSIE selection digital signature scheme; RSA Laboratories); CRYPTREC recommendation)
RSASSA-PKCS1 v1.5 (CRYPTREC recommendation)
Nyberg-Rueppel signatures
MQV protocol
Gennaro-Halevi-Rabin signature scheme
Cramer-Shoup signature scheme
One-time signatures
Lamport signature scheme
Bos-Chaum signature scheme
Undeniable signatures
Chaum-van Antwerpen signature scheme
Fail-stop signatures
Ong-Schnorr-Shamir signature scheme
Birational permutation scheme
ESIGN
ESIGN-D
ESIGN-R
Direct anonymous attestation
NTRUSign用于移动设备的公钥加密算法,密钥比较短小但也能达到高密钥ECC的加密效果
SFLASH (NESSIE selection digital signature scheme (esp for smartcard applications and similar); Schlumberger (France))
Quartz
秘密钥算法 (也称 对称性密钥算法)
流密码
A5/1,A5/2 (GSM移动电话标准中指定的密码标准)
BMGL
Chameleon
FISH (by Siemens AG)
二战'Fish'密码
Geheimfernschreiber (二战时期Siemens AG的机械式一次一密密码,被布莱奇利(Bletchley)庄园称为STURGEON)
Schlusselzusatz (二战时期 Lorenz的机械式一次一密密码,被布莱奇利(Bletchley)庄园称为[[tunny)
HELIX
ISAAC (作为伪随机数发生器使用)
Leviathan (cipher)
LILI-128
MUG1 (CRYPTREC 推荐使用)
MULTI-S01 (CRYPTREC 推荐使用)
一次一密 (Vernam and Mauborgne,patented mid-'20s; an extreme stream cypher)
Panama
Pike (improvement on FISH by Ross Anderson)
RC4 (ARCFOUR) (one of a series by Prof Ron Rivest of MIT; CRYPTREC 推荐使用 (limited to 128-bit key))
CipherSaber (RC4 variant with 10 byte random IV,易于实现)
SEAL
SNOW
SOBER
SOBER-t16
SOBER-t32
WAKE
分组密码
分组密码操作模式
乘积密码
Feistel cipher (由Horst Feistel提出的分组密码设计模式)
Advanced Encryption Standard (分组长度为128位; NIST selection for the AES,FIPS 197,2001 -- by Joan Daemen and Vincent Rijmen; NESSIE selection; CRYPTREC 推荐使用)
Anubis (128-bit block)
BEAR (由流密码和Hash函数构造的分组密码,by Ross Anderson)
Blowfish (分组长度为128位; by Bruce Schneier,et al)
Camellia (分组长度为128位; NESSIE selection (NTT & Mitsubishi Electric); CRYPTREC 推荐使用)
CAST-128 (CAST5) (64 bit block; one of a series of algorithms by Carlisle Adams and Stafford Tavares,who are insistent (indeed,adamant) that the name is not e to their initials)
CAST-256 (CAST6) (128位分组长度; CAST-128的后继者,AES的竞争者之一)
CIPHERUNICORN-A (分组长度为128位; CRYPTREC 推荐使用)
CIPHERUNICORN-E (64 bit block; CRYPTREC 推荐使用 (limited))
CMEA - 在美国移动电话中使用的密码,被发现有弱点.
CS-Cipher (64位分组长度)
DESzh:数字;zh-tw:数位加密标准(64位分组长度; FIPS 46-3,1976)
DEAL - 由DES演变来的一种AES候选算法
DES-X 一种DES变种,增加了密钥长度.
FEAL
GDES -一个DES派生,被设计用来提高加密速度.
Grand Cru (128位分组长度)
Hierocrypt-3 (128位分组长度; CRYPTREC 推荐使用))
Hierocrypt-L1 (64位分组长度; CRYPTREC 推荐使用 (limited))
International Data Encryption Algorithm (IDEA) (64位分组长度--苏黎世ETH的James Massey & X Lai)
Iraqi Block Cipher (IBC)
KASUMI (64位分组长度; 基于MISTY1,被用于下一代W-CDMAcellular phone 保密)
KHAZAD (64-bit block designed by Barretto and Rijmen)
Khufu and Khafre (64位分组密码)
LOKI89/91 (64位分组密码)
LOKI97 (128位分组长度的密码,AES候选者)
Lucifer (by Tuchman et al of IBM,early 1970s; modified by NSA/NBS and released as DES)
MAGENTA (AES 候选者)
Mars (AES finalist,by Don Coppersmith et al)
MISTY1 (NESSIE selection 64-bit block; Mitsubishi Electric (Japan); CRYPTREC 推荐使用 (limited))
MISTY2 (分组长度为128位:Mitsubishi Electric (Japan))
Nimbus (64位分组)
Noekeon (分组长度为128位)
NUSH (可变分组长度(64 - 256位))
Q (分组长度为128位)
RC2 64位分组,密钥长度可变.
RC6 (可变分组长度; AES finalist,by Ron Rivest et al)
RC5 (by Ron Rivest)
SAFER (可变分组长度)
SC2000 (分组长度为128位; CRYPTREC 推荐使用)
Serpent (分组长度为128位; AES finalist by Ross Anderson,Eli Biham,Lars Knudsen)
SHACAL-1 (256-bit block)
SHACAL-2 (256-bit block cypher; NESSIE selection Gemplus (France))
Shark (grandfather of Rijndael/AES,by Daemen and Rijmen)
Square (father of Rijndael/AES,by Daemen and Rijmen)
3-Way (96 bit block by Joan Daemen)
TEA(小型加密算法)(by David Wheeler & Roger Needham)
Triple DES (by Walter Tuchman,leader of the Lucifer design team -- not all triple uses of DES increase security,Tuchman's does; CRYPTREC 推荐使用 (limited),only when used as in FIPS Pub 46-3)
Twofish (分组长度为128位; AES finalist by Bruce Schneier,et al)
XTEA (by David Wheeler & Roger Needham)
多表代替密码机密码
Enigma (二战德国转轮密码机--有很多变种,多数变种有很大的用户网络)
紫密(Purple) (二战日本外交最高等级密码机;日本海军设计)
SIGABA (二战美国密码机,由William Friedman,Frank Rowlett,等人设计)
TypeX (二战英国密码机)
Hybrid code/cypher combinations
JN-25 (二战日本海军的高级密码; 有很多变种)
Naval Cypher 3 (30年代和二战时期英国皇家海军的高级密码)
可视密码
有密级的 密码 (美国)
EKMS NSA的电子密钥管理系统
FNBDT NSA的加密窄带话音标准
Fortezza encryption based on portable crypto token in PC Card format
KW-26 ROMULUS 电传加密机(1960s - 1980s)
KY-57 VINSON 战术电台语音加密
SINCGARS 密码控制跳频的战术电台
STE 加密电话
STU-III 较老的加密电话
TEMPEST prevents compromising emanations
Type 1 procts
虽然频率分析是很有效的技巧,实际上加密法通常还是有用的。不使用频率分析来破解一个信息需要知道是使用何种加密法,因此才会促成了谍报、贿赂、窃盗或背叛等行为。直到十九世纪学者们才体认到加密法的算法并非理智或实在的防护。实际上,适当的密码学机制(包含加解密法)应该保持安全,即使敌人知道了使用何种算法。对好的加密法来说,钥匙的秘密性理应足以保障资料的机密性。这个原则首先由奥古斯特·柯克霍夫(Auguste Kerckhoffs)提出并被称为柯克霍夫原则(Kerckhoffs' principle)。信息论始祖克劳德·艾尔伍德·香农(Claude Shannon)重述:“敌人知道系统。”
大量的公开学术研究出现,是现代的事,这起源于一九七零年代中期,美国国家标准局(National Bureau of Standards,NBS;现称国家标准技术研究所,National|Institute of Standards and Technology,NIST)制定数字加密标准(DES),Diffie和Hellman提出的开创性论文,以及公开释出RSA。从那个时期开始,密码学成为通讯、电脑网络、电脑安全等上的重要工具。许多现代的密码技术的基础依赖于特定基算问题的困难度,例如因子分解问题或是离散对数问题。许多密码技术可被证明为只要特定的计算问题无法被有效的解出,那就安全。除了一个着名的例外:一次垫(one-time pad,OTP),这类证明是偶然的而非决定性的,但是是目前可用的最好的方式。
密码学算法与系统设计者不但要留意密码学历史,而且必须考虑到未来发展。例如,持续增加计算机处理速度会增进暴力攻击法(brute-force attacks)的速度。量子计算的潜在效应已经是部份密码学家的焦点。
二十世纪早期的密码学本质上主要考虑语言学上的模式。从此之后重心转移,数论。密码学同时也是工程学的分支,但却是与别不同,因为它必须面对有智能且恶意的对手,大部分其他的工程仅需处理无恶意的自然力量。检视密码学问题与量子物理间的关连也是热门的研究。
现代密码学大致可被区分为数个领域。对称钥匙密码学指的是传送方与接收方都拥有相同的钥匙。直到1976年这都还是唯一的公开加密法。
现代的研究主要在分组密码(block cipher)与流密码(stream cipher)及其应用。分组密码在某种意义上是阿伯提的多字符加密法的现代化。分组密码取用明文的一个区块和钥匙,输出相同大小的密文区块。由于信息通常比单一区块还长,因此有了各种方式将连续的区块编织在一起。DES和AES是美国联邦政府核定的分组密码标准(AES将取代DES)。尽管将从标准上废除,DES依然很流行(3DES变形仍然相当安全),被使用在非常多的应用上,从自动交易机、电子邮件到远端存取。也有许多其他的区块加密被发明、释出,品质与应用上各有不同,其中不乏被破解者。
流密码,相对于区块加密,制造一段任意长的钥匙原料,与明文依位元或字符结合,有点类似一次一密密码本(one-time pad)。输出的串流根据加密时的内部状态而定。在一些流密码上由钥匙控制状态的变化。RC4是相当有名的流密码。
密码杂凑函数(有时称作消息摘要函数,杂凑函数又称散列函数或哈希函数)不一定使用到钥匙,但和许多重要的密码算法相关。它将输入资料(通常是一整份文件)输出成较短的固定长度杂凑值,这个过程是单向的,逆向操作难以完成,而且碰撞(两个不同的输入产生相同的杂凑值)发生的机率非常小。
信息认证码或押码(Message authentication codes,MACs)很类似密码杂凑函数,除了接收方额外使用秘密钥匙来认证杂凑值。