【Cryptography】公钥、RSA、DH密钥交换
公钥密钥学
公钥算法基于数学函数,而不是“替换”与“置换”,不像传统对称加密使用同一密钥,公钥密码使用非对称密钥。
公钥密码需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作加密,私钥则用作解密,反过来:私钥加密,需要公钥解密。
不同于加密和解密都使用同一个密钥的对称加密。公钥可以公开,可任意向外发布;私钥不可以公开,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
对公钥密码的要求
已经公钥无法确实私钥
只知道公钥与密文,无法恢复出明文
使用公钥加密可以用私钥解密;使用私钥加密可以用公钥解密
公钥密钥学的两个用处:加密与数字签名
加密
如果任何人使用公钥加密明文,得到的密文可以透过不安全的途径(如网络)发送,只有对应的私钥持有者才可以解密得到明文;
在数学上,d(c(x))=x,使用典型的爱丽丝与鲍伯假设来解释:
爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要透过不安全的互联网向鲍伯发送信息
爱丽丝撰写好原文,原文在未加密的状态下称之为明文x
鲍伯使用密码学安全伪随机数生成器产生一对密钥, ...
【Cryptography】DES、AES对称加密
XOR加密
一、 XOR 运算
逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算"。
它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。
1234true XOR true // falsefalse XOR false // falsetrue XOR false // truetrue XOR false // true
JavaScript 语言的二进制运算,有一个专门的 XOR 运算符,写作^。
12341 ^ 1 // 00 ^ 0 // 01 ^ 0 // 10 ^ 1 // 1
上面代码中,如果两个二进制位相同,就返回0,表示false;否则返回1,表示true。
二、 XOR 的应用
XOR 运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。
12345// 第一次 XOR1010 ^ 1111 // 0101// 第二次 XOR0101 ^ 1111 // 1010
上面代码中,原始值是1010,再任意选择一个值(上例是111 ...
【Algorithm-branch-and-bound】分支界限
布线问题
广度搜索问题
问题描述
印刷电路板将布线区域划分成 n×m 个方格如图 a 所示。精确的电路布线问题要求确定连接方格 a 的中点到方格 b 的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,如图 b 所示。为了避免线路相交,已布了线的方格做了封锁标记,其它线路不允穿过被封锁的方格。
一个布线的例子:图中包含障碍。起始点为 a,目标点为 b。
算法思想
解此问题的队列式分支限界法从起始位置 a 开始将它作为第一个扩展结点。与该扩展结点(a)相邻并且可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。
接着,算法从活结点队列中取出队首结点作为下一个扩展结点,并将与当前扩展结点相邻且未标记过的方格标记为 2(表示从起始位置到这个方格距离为2)并存入活结点队列。这个过程一直继续到算法搜索到目标方格 b 或活结点队列为空时为止。即加入剪枝的广度优先搜索。
本质上是广度优先搜索
输入地图后,需要设置上下、左右边界为-1表示墙
判断地图某个点能否走的标准:arr[x][y]==0?
如果到达终点可以提前结束,否则 ...
虚拟化架构
Xen原理,非常详细
https://www.jianshu.com/p/0dcde4428a3a
Xen和KVM优缺点对比,原创资料
https://juejin.cn/post/6844903957446279182
Xen缺点
https://zhuanlan.zhihu.com/p/33324585
Xen与KVM非常的详细(包含全、半硬件辅助虚拟化)
https://zhuanlan.zhihu.com/p/105499858
【电影】-Meet Joe Black
看电影时记录的语句
《第六感生死缘》
时长3小时
节奏很慢,很平静,配音好评
印象最深的一句话:“Multiply it by infinity and take it to the depth of forever,and you will still have barely a glimpse of what I’m talking about.”
这句话里面出现了再次
show me around
be my guide
do I blend in 我混入(伪装)的怎样
fill the bill 合适
not open for discussion 这不没得商量
lead the way 带路
May I say something 我能问些问题吗
how nice to meet you 很高兴见到你
Quince,it is 是的,的确
cat got your tongue 为啥不说话了
I was’n quite myself 不在状态
appear at his side out of the blue 突然出来(it is completely unexpect ...
【Algorithm-BackTracking】回溯法
批处理作业调度
来源:https://www.xin3721.com/Articlenet/3096.html
问题描述
给定n个作业的集合J=(J1,J2,… ,Jn)。每一个作业Ji都有两项任务分别在2台机器上完成。每个作业必须先有机器1处理,然后再由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理时间。则所有作业在机器2上完成处理时间和f=F2i,称为该作业调度的完成时间和。
简单描述
对于给定的n个作业,指定最佳作业调度方案,使其完成时间和达到最小。
举例说明
tji
机器1
机器2
作业1
2
1
作业2
3
1
作业3
2
3
这3个作业的调度方案共有6种(即3个作业的全排列),分别是123,132,213,231,312,321,它们所相应的完成时间和分别是19,18,20,21,19,19。显而易见,最佳调度方案是132,其完成时间和为18。
算法设计
从n个作业中找出有最小完成时间和的作业调度,所以批处理作业调度问题的解空间是一棵排列树。按照回溯法搜索排列树的算法框架,设开始 ...
【Algorithm-Gready】贪心算法
最小跳数
题目
给定一个非负整数数组,初始情况位于数组的第一个索引处。数组中的每个元素表示该位置的最大跳跃长度。要求达到最后一个索引花费的最小跳跃次数。
输入
2 3 1 1 4
输出
2
思路
情况1:可以从出发点,一次走到终点,也就是说 当前点的能跳数>当前点到终点距离
情况2:不能一次走到
如果不能一次走到,有以下操作:
假设从当前位置的 后一个候选点 出发,就是最优解
记录这个最优解位置为bestPointLoc,记录最优解的能跳数为theMax
遍历当前位置所有候选点,如果有候选点能走得更远,更新bestPointLoc和theMax
原则:
原则0:从当前点出发,优先选择候选点中能跳数更大的点
如输入3 5 1 1 4 6……,从3出发,优先选择跳到5
原则1:尽量走更远
如输入3 4 1 4,从3出发,优先选择第二个4
需要同时满足上面两个原则
具体过程:
假设某个候选点位置为i,对应的能跳数为arr[i]
如果arr[i]+i>=theMax+bestPointLoc,说明从bestPointLoc点出发不比从位置为i的 ...
【Algorithm】动态规划
矩阵连乘
代码其实……有点麻烦
详细解读
https://blog.csdn.net/qq_19782019/article/details/94356886
代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455// http://www.nbuoj.com/v8.83/Contests/Problem.php?cid=6743&nid=1 #include <iostream> #include <algorithm> using namespace std; //输入矩阵的行列int arr[2333]; //m用来记录计算量int m[2333][2333]={0}; //s用来保存括号位置int s[2333][2333]={0}; //n是矩阵个数int n; int main() { cin ...
【Cryptography】密码学复习
攻击方法
唯密文攻击(Ciphertext Only Attack,COA):仅持有密文。
已知明文攻击:(Known Plaintext Attack,KPA):掌握了一些明密文对。
选择明文攻击(Chosen Plaintext Attack,CPA):截获加密机。
选择密文攻击(Chosen Ciphertext Attack,CCA):截获解密机。
古典密码
大写字母AZ和小写字母az分别对应数字0~25(考试会给出表格)。
重点是置换密码:
单表:加法、乘法、仿射
多表:Playfair、Vigenere
安全性分析(包括抗暴力破解强度,即密钥空间大小)
分组密码
DES
算法过程
计算:S盒
查表,最高位和最低位对应行号,中间位对应列号。
安全性
互补性
弱密钥
双重、三重DES分析(加密的强度:密钥空间)
AES
算法过程(加密/解密)
解密是加密的逆过程。
计算
字节上的计算。
字节代换(S 盒)
简单的查表。
逆:也是查表。
行移位
简单的移位。
第0行不变,第1行左移1个字节,第2行左移2个字节,第3行左移3个字节。
逆:变成右移。
列混合
这应该是 AES ...
【Compiler】-8 中间代码生成
中间代码
语法分析之后,编译的任务是由已识别为正确的源程序生成一组规格一致,便于计算机加工的指令形式。
一、 中间代码生成方法
语法制导翻译,属性文法制导翻译
二、中间代码
中间代码:不是机器语言便于生成机器语言,便于代码优化。
逆波兰式
树形表示
三元式
四元式(最常用)
翻译方法
语法制导翻译
在语法分析的基础上进行边分析边翻译。
注:
语法制导翻译时会根据文法产生式右部符号串的含义,进行翻译,翻译的结果是生成相应中间代码。
语法制导翻译的依据是语义子程序。
具体做法:为每个产生式配置一个语义子程序,当语法分析进行归约或推导时,调用语义子程序,完成一部分翻译任务。
语法制导翻译种类
自上而下语法制导翻译:对每个文法符号配以语义动作
自下而上语法制导翻译:我们主要讨论LR语法制导翻译。
语义子程序
语义子程序写在该产生式后面的花括号内。X→α{语义子程序1}
注:在一个产生式中同一个文法符号可能出现多次,但他们代表的是不同的语义值,要区分可以加上角标。
如:E->E^1^ +E^2^
语义值
为了描述语义动作,需要为每个文法符号赋予不同的语义 ...