分组密码及其模式(ECB, CBC, CFB, OFB, CTR)详解与应用指南
lipiwang 2024-11-04 14:33 12 浏览 0 评论
分组密码(block cipher),将明文编码为比特序列后,划分为固定大小多个相等的块进行迭代,迭代方式称为模式,当最后一个块小于分组长度时,需要进行填充。块称为分组,块的长度称为分组长度。例如:DES的块大小为64,8字节,明文abcd1234abcd1234,共16字节,已知块大小8字节,abcd1234即为一个分组(1字节=8比特)。DES、3DES、AES等对称加密算法都属于分组密码。分组密码的模式有多种。明文分组长度与加密后的密文长度是相等的。
分组密码的主要模式有以下5种。
- ECB:Electronic CodeBook(电子密码本)
- CBC:Cipher Block Chaining(密码分组链接)
- CFB:Cipher Feedback(密文反馈)
- OFB:Output Feedback(输出反馈)
- CTR:CounTeR Mode,CTR (计数器)
CBC、CFB、OFB、CRT,在加密第一个明文分组的时候,不存在前一个密文分组,需要一个称为初始化偏移量(Initialization Vector,简称IV),代替前一个密文分组。而ECB将明文分组直接加密生成密文分组,各分组之间无依赖。
ECB
ECB(Electronic Codebook)称为电子密码本。在ECB模式中,明文被分成多个固定大小相等的明文分组,然后明文分组使用相同的密钥进行加密。这意味着,对于相同的明文分组,无论其在消息中的位置如何,加密后的密文分组都是相同的。
明文:abcd1234abcd1234 密钥:process
密文(hex): 64666daa9d8180c364666daa9d8180c33856cb56175e9a72
64666daa9d8180c3 64666daa9d8180c3 3856cb56175e9a72
优点简单、快速。明文中重复部分会反映在生成的密文中,可能成为别有用心之人的破译线索,存在一定风险。不建议使用。
适合加密数据较小或者一次性数据加密,不推荐对安全性要求较高的场合。
CBC
CBC(Cipher Block Chaining)称为密码分组链接,将明文分组与前一个密文分组进行异或运算,再进行加密。当加密时,由于不存在第一个密文分组,需要提前准备一个长度为分组长度的IV。即便存在明文分组相同的情况,也会生成不同的密文分组。
在ECB中,先加密第一个明文分组,还是第二个明文分组,对结果不会产生影响。而CBC,每个密文分组依赖前一个密文分组。IV选择必须保证随机性,否则降低加密安全性。
应用于TLS/SSL协议、对象存储的文件访问加密。
// key
private String sKey = "**pix****HMTtB**";
// IV
private String ivParameter = "**aPP6****57h8**";
//算法名
public static final String KEY_ALGORITHM = "AES";
//加解密算法/模式/填充方式
public static final String CIPHER_ALGORITHM = "AES/CBC/PKCS7Padding";
以上是在项目中实际应用CBD模式的示例,加密算法用于对存储于对象存储中的文件进行加密,防盗链。(key混淆后的)
CFB
CFB(Cipher Feedback)称为密文反馈。在CFB模式中,加密过程不再是直接对明文进行加密然后得到密文,而是利用前一个密文分组经过加密后与当前明文分组进行异或运算来生成新的密文分组。异或运算使得CFB模式能够适应可变长度的数据,并且不需要填充(padding)。使用生成的IV加密后和第一个明文分组异或运算生成密文分组。每个密文分组依赖前一个密文分组。
适合加密的数据流,网络中传输的数据加密。
OFB
OFB(Output Feedback)称为输出反馈,与CFB相似,OFB模式中分组密码的输出并不直接与明文数据结合,而是与明文数据进行异或运算生成密文。
适合数据传输实时加密。
CRT
CTR(CounTeR Mode),称为计数器模式。在CTR模式中,每个分组对应一个逐次累加的计数器,并通过对计数器加密来生成密钥流。最终的密文分组通过将计数器加密得到的比特序列,与明文分组进行异或运算产生。
适合对性能有高要求的场景。
对于需要高效并行处理和高安全性的情景,CTR模式通常是优选。需要较好的扩散性和一定程度的错误隔离,可以选择CBC或CFB。要求简单性和实时处理能力,且对安全性要求不是极端严格,OFB或CFB可以考虑。基本不推荐使用ECB模式,除非是在特定的低安全需求下处理独立的数据块。
读完后,忍不住要加个关注!不是我吹,但你会后悔没关注的!
相关推荐
- 微软Office Open XML中的数字签名漏洞
-
MicrosoftOffice是最广泛使用的办公文档应用程序之一。对于重要文件,如合同和发票,可以对其内容进行签名,以确保其真实性和完整性。自2019年以来,安全研究人员发现了针对PDF和ODF等其...
- Javaweb知识 day12 XML(javaweb中xml作用)
-
一、XML:1.1概念:ExtensibleMarkupLanguage可扩展标记语言*可扩展:标签都是自定义的。<user><student>1.2功能:...
- 易筋洗髓功——内外同修方可致远(易筋洗髓功口诀)
-
达摩祖师所传易筋、洗髓两经,一分为二,二实为一,无非以方便法门接引众生,而归于慈悲清净之心地。修炼《易筋经》是为强身健体,修炼《洗髓经》是为修心养性,此二者相辅相成,内外兼修,缺一不可。这是一套传统中...
- 道家洗髓功修炼要义,洗髓功如何做到丹田聚气?
-
不管是道家洗髓功,还是洗髓经,其修炼的关键点就在于得气、行气、聚气...那么,作为洗髓功修炼者,具体该怎么做呢?在实际修炼中,就洗髓功的修炼方法来讲,我们可以简单的归纳为修炼三部曲,其具体表现如下:一...
- 「清风聊练功」师门传我易筋经:聊聊我的学习经历和正身图感受
-
一个人的眼界认识,是随着是自身的知识积累和水平不断成长的。开篇为什么要说这么一句呢?是从我的学习经历上感受明显的这句话:一处不到一处迷。我们学传统武术,内功功法,也是从小白到明白一步步走的,走的越远,...
- 内功外练功介绍(练内功 外功)
-
这里介绍我练习的两套动功心得体会。是老道长的八部金刚功、长寿功和增演易筋洗髓经。八部金刚功外练奇经八脉,练出健康强壮的好身体还是可以的,长寿功也是内练功法。这部功法很好的预防效果。这个大家都认同的。说...
- 《增演易筋洗髓内功图说》17卷(1930年(清)周述官撰 1
-
少林空悟老师珍藏
- 国术典籍:《增演易筋洗髓内功图说》【2024年8月编校】
-
《增演易筋洗髓内功图说》系养生气功著作,全书共十八卷。清周述官编撰于光绪二十一年(1895年)。清光绪十九年(1893年),僧人静一空悟将少林功法传授于周述官,并将《增益易筋洗髓内功图说》十二卷(按,...
- 小说:自媒体小白的修道之路-洗髓(自媒体小白运营技巧)
-
谁应了谁的劫,谁又变成了谁的执念。当沧海遗忘了桑田,这世间又多了一个不回家的人!异域空间中,知生缓缓起身,目光扫了一下小帝后,又转身看向画板上的那朵白色蒲公英,自言道:“白瑛,这一世我们莫要再辜负了!...
- 这才是少林洗髓经真相:它是静功和导引术与八段锦暗合
-
不少朋友误解易筋经和洗髓经,将其简单归为强力呼吸的吐纳功以及为了提升房中的关窍功。事实上易筋经和洗髓经是两部功法:易筋经主要为炼体,包含以膜论为核心的十二月怕打筋膜法,以及辅助的呼吸、导引功法;洗髓经...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)