CFB密文反馈模式 CFB密文反馈模式属于分组密码模式中的一种.加密与解密使用同一结构,加密步骤生成用于异或的密钥流. 其弥补了ECB电子密码本模式的不足(明文中的重复排列会反映在密文中,通过删除替换分组可以对明文进行操作) 其优点是 不需要填充.因为从明文分组到密文分组只需要一次XOR,使用的是前一次密文分组经过加密算法生成的密钥流. 解密支持并行.在已知全部密文分组的情况下,可以对每一部分分组开启多线程进行解密. 能够解密任意密文分组.任意密文分组只与前一个密文分组有关. 其缺点是: 加密不…
CTR 计数器模式 计数器模式CTR是分组密码模式中的一种.通过将逐次累加的计数器进行加密来生成密钥流的流密码.每次加密时会生成一个不同的值来作为计数器的初始值. 可以事先进行加密.解密的准备. 加密.解密使用相同结构. 对包含某些错误比特的密文进行解密时,只有明文中响应的比特会出错. 加密和解密均支持并行运算.可以以任意顺序对分组进行加密和解密. 在CTR模式基础上添加认证功能的模式称为GCM模式.生成密文的同时生成用于认证的信息.用于识别主动攻击者发送的伪造的密文. 混合密码系统 混合密码系…
HMAC 单向散列消息认证码 消息认证码MAC是用于确认完整性并进行认证的技术,消息认证码的输入包括任意长度的消息和一个发送者和接收者之间共享的密钥(可能还需要共享盐值). HMAC是使用单向散列函数来构造消息认证码的方法,任何高强度单向散列函数都可以被用于HMAC,具体方法如下图所示. 发送者需要同时把消息和认证码发送给接收者,接收者接收了两者,并根据接收到的消息和共享的密钥生成认证码进行比较.如果相同则消息未被篡改且认证成功. MAC不能保证信息的机密性!MAC无法对第三方"C"证…
当涉及到"维护"时,为了"复用"目的而使用继承,结局并不完美 P4 对父类代码进行修改时,影响层面可能会很大 思考题 利用继承来提供 Duck 的行为,这会导致下列哪些缺点?(多选) P5 [ ] A. 代码在多个子类中重复 使用继承就是为了复用代码 [答案有此选项]从另一方面考虑,也有这个缺点,比如:多个子类都存在相同的实现,但又与父类的实现不同 [x] B. 运行时的行为不容易改变 编译完成后,各种行为已经确定,无法再继续修改(第一次看没有选择,看完策略模式后又…
今天在编写代码的时候遇到了一个莫名其妙的问题,请看下面 <html> <head> <title> Test </title> <!--<meta http-equiv="X-UA-Compatible" content="IE=8">--> <meta http-equiv="X-UA-Compatible" content="chrome=1"…
在交互模式下,python代码可以立即执行,所以这很方便我们进行代码测试 1.命令窗口,输入python (如果没配置环境变量则需带python安装目录的绝对路径) >>> 这个就是进入python 交互模式的符号 2.测试代码:定义两个变量,输出他们四则运算结果: 从中我们可以看出,在交互模式下,可以直接定义变量.赋值和各种表达式,按回车后即可打印相应的结果 再看上图,可以看出交互模式下python的变量类型定义不需要指定,但是如果变量的值是一个字符串,则逻辑运算+ 是连接的意思 当然…
目录 1.背景 2.案例 3.switch…case…方式实现 4.switch…case…带来的问题 5.使用策略模式重构switch…case…代码 6.总结 1.背景 之前在看<重构    改善既有代码的设计>一书,在看到Replace Type Code With  State/Strategy(用状态模式/策略模式替换类型码)一节时遇到一个困惑:怎么用策略模式替换switch case代码?所幸的时,两天前查资料的时候偶然看到 圣殿骑士 的博客,他写的<31天重构学习>系…
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进行了截图记录,没有对截图步骤进行详细的文字说明(后面博主时间充裕了,会对目前的博客编辑修改,补充上详细的文字说明):有些步骤和相关知识点缺乏文字描述,可能会难以理解.读者如有不明之处,欢迎博客私信或者微信(本人微信在博客下方的"关于博主"处)与本人交流,共同进步. J…
前言 在上一篇开始Java8之旅(六) -- 使用lambda实现Java的尾递归中,我们利用了函数的懒加载机制实现了栈帧的复用,成功的实现了Java版本的尾递归,然而尾递归的使用有一个重要的条件就是递归表达式必须是在函数的尾部,但是在很多实际问题中,例如分治,动态规划等问题的解决思路虽然是使用递归来解决,但往往那些解决方式要转换成尾递归花费很多精力,这也违背了递归是用来简洁地解决问题这个初衷了,本篇介绍的是使用备忘录模式来优化这些递归,并且使用lambda进行封装,以备复用. 回顾 为了回顾上…
前言 在上一篇开始Java8之旅(六) -- 使用lambda实现Java的尾递归中,我们利用了函数的懒加载机制实现了栈帧的复用,成功的实现了Java版本的尾递归,然而尾递归的使用有一个重要的条件就是递归表达式必须是在函数的尾部,但是在很多实际问题中,例如分治,动态规划等问题的解决思路虽然是使用递归来解决,但往往那些解决方式要转换成尾递归花费很多精力,这也违背了递归是用来简洁地解决问题这个初衷了,本篇介绍的是使用备忘录模式来优化这些递归,并且使用lambda进行封装,以备复用. 回顾 为了回顾上…