Home avatar

Wings

「笔记」应用密码学与网络安全

古典密码

代替和置换

单表代替密码.

$c = p + k \mod |\Sigma|$

统计频率可以攻击

多字母代替密码

在 $5 \times 5$ 的矩阵中, 从左到右从上到下, 先填入密钥, 然后再按顺序填入剩余字母. 其中 I = J.

明文两个字母一组. 若一组字母相同, 则插入一个字母 (如 x). 若明文长度奇数, 则最后补一个字母 (如 x).

两字母在表上

  1. 同行, 用右边一个代替
  2. 同列, 用下面一个代替
  3. 对角线代替, (第一个字母所在行, 第二个字母所在列), (第一个字母所在列, 第二个字母所在行)

明密文不是一一对应关系, 能够降低统计规律, 但仍然有结构信息, 可被攻破.

多字母代替密码

$n \times n$ 可逆矩阵 K, 明文分组, $n \times 1$ 的列向量 $p$.

加密: $c = Kp \mod |\Sigma|$

解密: $p = K^{-1}c \mod |\Sigma|$

「笔记」软件工程

第一章

软件是程序, 数据及相关文档的完整集合

文档 + 程序

  • ⽂档是软件质的部分
  • 程序是⽂档代码化的表现形式
  1. 运行时提供程序
  2. 程序能够处理数据
  3. 程序能够按照预定的商业逻辑运行
  4. 描述程序功能需求以及程序如何操作的文档

软件开发和维护中遇到的问题

  • 怎样满足对软件日益增长的需求 (如何开发软件)
  • 如何维护数量不断膨胀的已有软件 (如何维护)

说 nm 呢

产生原因:

两个方面, 1) 软件本身的特点 2) 软件开发维护的方法

  • 客观: 软件本身
    • 逻辑部件
    • 规模庞大
  • 主观: 不正确的方法:
    • 忽视需求分析
    • 忽视文档
    • 轻视维护

解决方法:

  1. 组织管理
  2. 工程项目管理方法
  3. 技术措施
  4. 软件开发技术与方法
  5. 软件工具

软件工程是知道计算机软件开发和维护的一门工程学科. 采用工程的概念, 原理, 技术和方法来开发维护软件.

  1. 问题定义: 问题性质报告, 工程目标和规模报告, 对用户访问调查, 得到双方满意的文档
  2. 可行性研究: 导出系统的逻辑模型, 数据流程图, 在此基础上更准确, 更具体确定工程规模和目标, 更准确估计系统成本和效益.
  3. 需求分析: 和用户配合, 交流, 得出经过用户确认的系统逻辑模型, 通常用数据流程图, 数据字典和简要的算法表示
  4. 总体设计: 如何解决问题, 低成本完成最少的工作, 中成本完成一些附加功能, 高成本完成用户还可能希望有的功能
  5. 详细设计: 把任务具体化, 设计出详细的程序说明, 通常是 HIPO 图 或 PDL 语言
  6. 编码和单元测试: 写程序, 并测试每个模块
  7. 综合测试: 通过各种测试使软件达到要求
    1. 集成测试: 更具软件结构, 把模块按策略装配, 测试 (联调的意思)
    2. 验收测试: 按规格说明书的规定, 对目标系统进行验收
  8. 软件维护: 改正性, 适应性, 完善性, 预防性维护

瀑布模型: