JavaShuo
栏目
标签
《图解密码技术》阅读笔记
时间 2019-12-09
标签
图解密码技术
阅读
笔记
繁體版
原文
原文链接
第一章
密码与信息安全常识
不要使用保密的密码算法:
密码算法的秘密迟早会公诸于世
试图经过密码算法自己的保密性来保证安全称之为隐蔽式安全,很蠢。
使用低强度的密码比不进行任何加密更危险
任何密码总有一天会被破解
第二章
凯撒密码:
位移实现加密
知道位移量便可进行逆向移动解密(也能够暴力穷举破解)
替换密码:
将明文中全部字母变替换为另外一套字母表
密钥空间:全部密钥的集合
频率分析:明文中字母出现的频率与密文中字母出现的频率是一致的
破译技巧:
高频字母和低频字母都能成为线索
字母连成单词
Enigma
国防军密码本的“每日密码”通讯密码
通讯密码是3位,写两次共6位
每日密码加密后的通讯密码和通讯密码加密后的密文被拼接发送给对端
弱点:
将通讯密码连续输入两次
通讯密码是人为选定的
必须派发国防军密码本
第三章
XOR(异或)
两个相同的数进行异或运算的结果必定为0
一次性密码本
即便能够遍历整个密码空间,遍历解密获得明文,也没法确认哪一个是正确的明文
一次性密码是无条件安全的,在理论上是没法破译的
不实用:
密钥在两边配送
密钥保存
密钥重用
密钥同步
密钥生成
DES
DES是一种将64位明文加密成64位密文的对称密码算法
密钥长度是56bit(64bit,每隔7位有1bit错误检验bit)
轮:
将输入的数据(64bit)等分为左右两部分
将输入的右侧数据直接发送到输出的右侧
将输入的右侧发送到轮函数
轮函数根据右侧数据和子密钥,计算出一串看上去随机的bit序列
将上一步的bite序列与左侧数据进行XOR运算,并将结果做为输出的左侧
Feistel网络:
将上述单轮的输出结果左右对调做为下一轮的输入再开启一轮计算,最后一轮计算结果不对调,直接输出,即为Feistel网络
特色:
轮数能够任意增长
加密时不管使用任何轮函数都能正常解密
加密和解密能够用彻底相同的结构来实现
三重DES: 加密-解密-加密
AES
选出Rijndael做为最终算法
Rijndael:
分组长度和密钥长度能够分别以32bit为单位在128到256bit范围内进行选择,AES固定分组长度为128,密钥长度为128,192,256
Rijndael加密:
一样由轮构成:SubBytes、ShiftRows、MixColumns、AddRoundKey,使用SPN架构
输入分组为128bit(16bytes)
SubBytes:逐字节从替换表(S-Box)中替换
ShiftRows:上一步处理完成后,以4字节为单位的行进行按必定规则向左平移,且每一行平移的字节数不一样
MixColumns:进行列计算
AddRoundKey:将上一步的输出与轮密钥进行XOR
在Rijndael中以上4步通常重复10-14轮
第四章 分组密码的模式
分组密码与流密码
分组密码:每次之只能处理特定长度的一块数据的密码算法
流密码:对数据流进行持续处理,通常以一、八、32bit为单位进行加密解密
模式:对分组密码进行迭代使之能处理超长明文的迭代方法
ECB模式:Electronic CodeBook(电子密码本模式)
将明文分组加密后的结果将直接成为密文分组,相同的明文对应相同的密文,所以也被称为电子密码本模式,最后一个分组小于分组长度时会进行填充
最大弱点是能够在不破译密文的状况下操纵明文
须要填充
CBC模式: Cipher Block Chaining(密文分组连接模式)
首先将明文分组与前一个密文分组进行XOR运算,而后再进行加密
第一个分组和初始化向量(IV)进行XOR,初始化向量由每次加密随机产生
密文分组损坏只会影响最多2个分组的明文解密,密文分组缺失则影响整个解密
须要填充
对CBC模式的攻击:
对填充字段进行攻击
对初始化向量进行攻击
SSL 3.0能够经过中间修改密文致使服务器没法正确解密,基于服务器反馈解密错误信息实现提示攻击(POODLE)
初始化向量必须使用不可预测的随机数,在TLS1.0中IV使用的不是不可预测随机数,而是上一次CBC模式加密时的最后一个分组。TLS 1.1以上的版本中,改成了必须显式的传送IV。
CTS模式:对于明文长度不足的部分,使用最后一个分组的前一个密文数据来进行填充
CFB模式:Cipher FeedBack(密文反馈模式)
前一个密文分组会被送回到密码算法的输入端,加密后的前一个分组的密文和明文XOR生成密文
一样须要初始化向量(IV)
CFB模式中由密码算法所生成的比特序列称为密钥流,在CFB模式中密码算法就至关于用来生成密钥流的伪随机数生成器,初始向量至关于生成器的种子
在CFB模式中明文数据能够被逐比特加密
攻击方式:重放攻击
不须要填充
OFB模式:Output-Feedback(输出反馈模式)
密码算法的输出会反馈到密码算法的输入
明文经过和密码算法输出值XOR来实现加密
须要初始化向量(IV)
特色:能够提早生成密钥流,直接用密钥流和明文XOR便可
不须要填充
CTR模式:CounTeR(计算器模式)
经过将逐次累加的计数器进行加密来生成密钥流的流密码
计数器生成方法(128bit、16字节):前8字节为nonce(必须保证每次的值都不同),后8字节为分组序号,累增
第五章 公钥密码
对称密钥的问题:如何将密钥安全的传递到两端?
预共享密钥
密钥分配中心
Diffie-Hellman密钥交换
公钥密码
RSA
实质是基于大质数分解难度保证安全性
加密:密文 = (明文^E)mod N
E和N两个数组合成公钥
解密:明文 = (密文^D)mod N
生成密钥对的过程:
选择两个大质数p和q(判断一个数是不是大质数的方法由费马测试和米勒·拉宾测试),N = p x q
求L,L是p - 1和 q - 1的最小公倍数,L = lcm(p - 1,q - 1)
求E,1 < E <L,E和L的最大公约数为1(互质),该最大公约数的条件能够保证必定存在解密时须要使用的D
求D,1< D < L, E x D mod L = 1
没法防护中间人攻击
其余公钥密码
EIGamal方式:
基于mod N下求离散对数的困难度保证安全性
密文长度会变成明文长度的两倍
椭圆曲线算法ECC:
将椭圆曲线上的点进行特殊的乘法运算
第六章 混合密码系统
使用对称密钥加密明文,用非对称密钥加密对称密钥的密钥
第七章 单向散列函数
单向散列函数的性质;
根据任意长度的消息计算出固定长度的散列值
可以快速计算出散列值
消息不一样散列值也不一样
弱抗碰撞性:要找到和该条消息具备相同散列值的消息很是困难
强抗碰撞性:要找到散列值相同的两条不一样的消息是很是困难的
具有单向性:没法经过散列值反推消息
单向散列函数的应用:
基于口令的加密
消息认证码
数字签名
伪随机数生成器
一次性口令
具体例子:
MD四、MD5,已被攻破
SHA-1(160bit),已被攻破
SHA-2:由SHA-25六、SHA-512衍生,22四、25六、38四、512
RIPEMD-160:未被攻破,比特币
SHA-3:Keccak
Keccak:
海绵结构:输入数据在进行填充后要通过吸取阶段和挤出阶段
存在一个内部状态b = r + c参与计算
输入消息按长度r分割
分割后的输入消息送入Keccak-f[b]中进行计算输出值做为下一轮的b
将消息计算完成后吸取结束,开始挤出,将吸取结束后的计算输出值取长度r做为第一个输出分组,整个计算输出值做为下一轮的b输入,输出第二个分组,直到分组组合长度达到输出需求
对单向散列函数的攻击
暴力破解:利用文件的冗余性生成具备相同散列值的另外一文件,破解弱抗碰撞性
生日攻击:构造两个散列值相同的文件,破解强对抗性
第八章 消息认证码(MAC)
输入包括任意长度的消息和共享密钥,输出固定长度的数据(MAC值)
GCM 使用AES等128比特分组密码的CTR模式
HMAC:使用单向散列函数构造消息认证码
计算步骤:
用0填充密钥,使密钥长度等于单向散列函数的分组长度
填充后的密钥和iPad(00110110循环到分组长度)XOR生成ipadkey
ipadkey与消息组合,经过单向散列函数计算散列值
填充后的密钥与opad(01011100循环到分组长度)XOR生成opadkey
opadkey与以前计算出来的散列值组合,再次经过单向散列函数计算散列值
获得MAC值
对消息认证码的攻击
重放攻击
-防护:序号、时间戳nonce
密钥推测攻击
暴力破解、生日问题
消息验证码没法解决的问题
对第三方证实
防止否定
第九章 数字签名
数字签名私钥生成的密文不用于保证机密性,而是被用于表明一种只有持有该密钥的人才能生成的信息,这样的信息通常被称为认证符号
应用实例:
安全信息公告
软件下载
公钥证书
SSL/TLS
实现
RSA
EIGamal
DSA
ECDSA
Rabin
攻击
中间人攻击
攻击散列函数
攻击公钥
伪造
第十章 证书
公钥(Public-Key Certificate):是由认证机构(certificate authority)对我的信息及公钥进行数字签名生成的数字签名信息
公钥基础设施(PKI)
组成要素:
用户:使用PKI的人
认证机构(CA):颁发证书的人
生成密钥对(也能够由用户生成)
在注册公钥是对本人身份进行认证
生成并颁发证书
做废证书
公钥注册和身份认证能够由注册机构(RA)来分担
仓库:保存证书的数据库
证书机构的工做
生成密钥对(由证书机构或者PKI用户自行生成RFC 7292)
注册证书:使用证书机构的私钥对证书进行签名
做废证书与CRL(证书做废清单)
证书的层级结构
证书链由上到下给下面作签名,根CA(root CA)自签名
对证书的攻击:
在公钥注册以前进行攻击
注册类似人名进行攻击
窃取认证机构的私钥进行攻击
假装成认证机构进行攻击
钻CRL的空子
第11章 密钥
密钥管理
生成密钥
用随机数生成密钥
用口令生成密钥
配送密钥
预共享密钥
密钥分配中心
公钥密码
DH密钥交换
更新密钥
通讯过程当中按期进行密钥变动,发送者和接收者用单向散列函数 计算当前密钥的散列值,将这个值用作新的密钥。经过单向函数的单向性保证安全性
保存密钥
人类没法记住密钥
做废密钥
密钥和明文是等价的
Diffie-Hellman交换
用于在两个终端之间计算共享密钥
计算过程:
Alice向Bob发送两个质数P和G:P必须是一个很是大的质数,G是一个和P相关的数,称为'生成元'。这两个数无需保密
Alice生成一个随机数A,1<A<P-2。该数字对全部人保密
Bob生成一个随机数B,1<B<p-2。该数字对全部人保密
Alice将G^A mod P 的值给Bob
Bob将G^B mod P 的值给Alice
Alice用Bob发过来的数计算A次方并求 mod P:密钥=(G^B mod P)^A mod P = G^(BxA) mod P
Bob用Alice发送过来的数计算B次方并求mod P:密钥=(G^A mod P)^B mod P = G^(AxB) mod P
Alice的计算出的密钥 == Bob计算出来的密钥
安全性的保证:
有限域(finite field)的离散对数问题:根据G^A mod P 计算出A的有效算法目前尚未出现
生成元:
假设一个数g是P的原根,那么g^i mod P的结果两两不一样,且有 1<g<P,0<i<P,归根到底就是g^(P-1) = 1 (mod P)当且仅当指数为P-1的时候成立.(这里P是素数)
原根的求法目前只能是枚举
之因此1< A(B) < P-2,是由于当A(B) == P-1 时mod的结果必定是1
基于口令的密码(PBE)
PBE加密:
生成KEK
加密密钥的密钥(KEK):伪随机数生成器生成salt,将salt和口令输入单向散列函数输出值就是KEK
生成会话密钥并加密:
会话密钥是用来加密消息的密钥(CEK),用伪随机数生成器生成
使用KEK加密(对称密钥算法)CEK,而后丢弃KEK。将加密后的CEK和salt一块儿保存在安全的地方
加密消息
用CEK加密消息
PBE解密:
重建KEK
使用口令和以前保存的salt生成KEK
解密会话密钥(CEK)
依然用对称密钥算法基于KEK解密以前加密的CEK
解密消息
使用解密出来的CEK解密被加密的消息
salt的做用
盐是由伪随机数生成器生成的随机数
盐是用来防护字典攻击的,口令加盐增长了预先生成匹配的KEK的难度
口令的做用:
具备充足长度的密钥是没法用人脑记忆的
经过拉伸来改良PBE
将KEK再输入到单向散列函数中,来个1000次
如何生成安全的口令
使用只有本身才能知道的信息
不要使用对本身重要的人或事的名字
不要使用关于本身的信息
不要使用别人见过的信息
将多个不一样的口令分开使用
有效利用笔记
理解口令的局限性
使用口令生成和管理工具
第十二章 随机数
随机数的使用场景
生成密钥
生成密钥对
生成初始化向量(IV):用于分组密码的CBC、CFB、OFB
生成Nonce:用于防护重放攻击及分组密码的CTR模式
生成盐:PBE
随机数的性质:
随机性:不存在统计学误差,是彻底杂乱的数列(弱伪随机数)
不可预测性:不能从过去的数列推测出下一个出现的数(强伪随机数)
不可重现性:除非将数列自己保存下来,不然不能重现相同的数列(真随机数)
随机数生成器:根据传感器收集的热量、声音的变化等事实上没法预测和重现的天然现象来生成。
伪随机数生成器:生成随机数的软件
将根据内部状态计算伪随机数的方法和改变内部状态(伪随机数生成器所管理的内存中的数值)的方法组合起来,就是伪随机数生成的算法。
经过种子(seed)来进行内部状态的初始化,种子须要保密,不能使用易被推测的值
具体为随机数生成器:
杂乱方法
线性同余法(弱伪随机数)
Rn+1 = (A x Rn + C)mod M
当n为0时R0即为种子
最近一次生成的伪随机数的值就是内部状态
不具有不可预测性
单向散列函数法(强伪随机数)
用伪随机数的种子初始化内部状态(计数器)
用单向散列函数计算计数器的散列值
将散列值做为伪随机数输出
计数器的值加一
根据须要的伪随机数的数量重复2——4步
单向散列函数的单向性是支撑伪随机数生成器不可预测性的基础
密码法:(计数器初始值和密钥做为种子)
初始化内部状态(计数器)
用密钥加密计数器的值
将密文做为伪随机数输出
计数器的值加1
根据须要的伪随机数数量重复2 - 4步骤
密码的机密性是支撑伪随机数生成器不可预测性的基础
ANSI X9.17
一、初始化内部状态
二、将当前时间加密生成掩码
三、对内部状态与掩码求XOR
四、将3的结果加密
五、将4的结果做为伪随机数输出
六、对4的结果与掩码求XOR
七、将步骤6的结果加密
八、将步骤7的结果做为新的内部状态
九、重复2-8直到得到所需数量的随机数
对伪随机数生成器的攻击:
对种子进行攻击:伪随机数的种子和密码的密钥同等重要
对随机数池进行攻击
第十三章 PGP
PGP简介:
1990年,Pretty Good Privacy
混合密码系统的特色:用公钥密码加密会话密钥,用对称密码加密消息
PGP的功能
对称密码
公钥密码
数字签名
单项散列函数
证书
压缩
文本数据
大文件的拆分和合并
钥匙串管理
加密过程:
一、用伪随机数生成器生成会话密钥
二、用公钥密码(接收者的)加密会话密钥
三、压缩消息
四、使用对称密码(使用1中生成的会话密钥)对压缩的消息进行加密
五、将加密的会话密钥(2)和加密的消息(4)拼合起来
六、将步骤5的结果转换为文本数据,转换后的结果就是报文数据
为何要先压缩再加密而不是反过来:由于通过加密后比特序列的冗余性基本消失了,没法再压缩
解密过程:
一、接收者输入解密的口令:PGP的私钥是保存在用户的钥匙串中的,使用基于口令的密码(PBE)保存。口令是由多个单词组成的短语。
二、求口令的散列值,生成用于解密私钥的密钥
三、将钥匙串中通过加密的私钥进行解密
四、将报文数据(文本数据)转换成二进制数据
五、将二进制数据分解成两部分:加密的会话密钥、通过压缩和加密的消息
六、用私钥密码(3)解密会话密钥
七、对5中获得的通过压缩和加密的消息用对称密码(6)进行解密
八、对7中获得的通过压缩的消息解压缩
九、获得原始消息
生成数字签名
一、发送者输入签名用的口令
二、求口令的散列值,生成用于解密私钥用的密钥
三、将钥匙串中通过加密的私钥进行解密
四、用单项散列函数计算消息的散列值
五、对4中的散列值进行签名
六、将5中的数字签名和消息进行拼合
七、将6进行压缩
八、将7转换为文本数据
九、步骤8的结果就是报文数据
验证数字签名
一、将报文数据(文本数据)转换为二进制数据
二、对通过压缩的数据进行解压缩
三、将解压缩后的数据分解成通过签名的散列值和消息两部分
四、将通过签名的散列值用发送者的公钥进行解密,恢复出发送者发送的散列值
五、将3中分解出的消息输入单向散列函数计算散列值
六、将4中获得的散列值与步骤5中获得的散列值进行对比
信任网
互相对对方的公钥进行数字签名
信任级别:
绝对信任(持有私钥本人)
彻底信任
有限信任
不信任
第十四章 SSL/TLS
要解决的问题:
不被窃听:机密性
不被篡改:完整性
身份确认:认证问题
TLS协议:
握手协议:负责除加密之外的其余操做
握手协议:负责在客户端和服务器之间协商决定密码算法和共享密钥,基于证书的认证操做也在这个协议中完成
密码规格变动协议:负责向通讯对象传达变动密码方式的信号
警告协议:负责在发生错误时将错误传达给对端
应用数据协议:将上层应用数据传达给通讯对象
记录协议:位于TLS握手协议下层,负责对消息进行压缩,使用对称密码对消息进行加密,用消息认证码验证。
消息被分割成多个较短的片断,而后分别对每一个片断进行压缩,压缩算法须要与通讯对象协商
压缩对象被加上消息认证码,保证完整性并进行数据认证,为了防重放,计算时还加了片断编号。
压缩片断+消息认证码经过对称密码进行加密。加密使用CBC模式,IV经过主密码生成
握手协议:
1 ClientHello(客户端→服务器):
可用版本号
当前时间:在基本的TLS中不使用
客户端随机数
会话ID:用于重建以前创建的会话
可用的密码套件清单
可用的压缩方式清单
2 ServerHello(客户端<---服务器)
使用的版本号
当前时间
服务器随机数:由服务器生成的不可预测的随机数
会话ID
使用的密码套件
使用的压缩方式
3 Certificate(客户端<----服务器)
服务器给客户端发送证书清单(X.509v3)先发送服务器证书,而后发送认证机构的证书
以匿名方式通讯时,不发送Certificate消息
4 ServerKeyExchange(客户端<----服务器)
当Certificate没法知足需求时,以此补充Certificate信息,当不须要补充时,能够不发送
5 CertificateRequest(客户端<----服务器)
服务器对客户端进行身份认证,不认证就不会发送这个消息
6 ServerHelloDone(客户端<---服务器)
服务器问候到此结束
7 Certificate(客户端---->服务器)
客户端提供证书(取决于5)
8 ClientKeyExchange(客户端---->服务器)
当密码套件包含RSA时,会随ClientKeyExchange消息一块儿发送通过加密的预备主密码
当包含DH时,会随ClientKeyExchange消息一块儿发送DH的公开值
预备主密码(pre-master secret)是由客户端生成的随机数,后续会成为生成主密码的种子
基于预备主密码算出相同的主密码,基于主密码生成:
对称密码的密钥
消息认证码的密钥
对称密码的CBC模式中使用的初始化向量(IV)
9 CertificateVerify(客户端--->服务器)
在服务器发送CertificateRequest消息时才会回复CertificateVerify,证实本身持有客户端证书的私钥
计算主密码和握手协议中传送消息的散列值,加上本身的数字签名
10 ChangeCipherSpec(客户端--->服务器)
切换密码(密码规格变动协议的消息)
在收到之歌消息后客户端和服务器同时切换密码
11 Finished(客户端--->服务器)
使用切换后的密码套件来发送
消息内容固定,服务器能够经过解密来确认正确性
12 ChangeCipherSpec(客户端<---服务器)
服务器切换密码
13 Finished(客户端<---服务器)
结束握手
14 切换至应用数据协议
密码规格变动协议:用于密码切换的同步
加密通讯的中途也可使用变动协议来修改密码套件
警告协议
发生错误时通知通讯对象
应用数据协议
用于和通讯对象之间传递数据
主密码
48字节的数值
主密码的计算
计算元素:预备主密码、客户端随机数、服务器随机数
客户端随机数和服务器随机数的做用至关于防止攻击者事先计算出密钥的盐
计算方法:使用基于密码套件中定义的单项散列函数来实现伪随机函数
主密码的目的:
对称密码的密钥(客户端--->服务器)
对称密码的密钥(客户端<---服务器)
消息认证码的密钥(客户端--->服务器)
消息认证码的密钥(客户端<---服务器)
对称密码的CBC模式所使用的初始化向量(客户端--->服务器)
对称密码的CBC模式所使用的初始化向量(客户端<---服务器
对SSL/TLS的攻击
OpenSSL的心脏流血漏洞(CVE-2014-0160)
OpenSSL在TLS的心跳扩展功能中对于请求的数据大小没有进行检查,从而致使错误的将内存中与请求无关的信息返回给请求者
SSL 3.0的POODLE攻击
SSL 3.0对CBC模式加密时的分组填充操做没有进行严格的规定,并且填充数据的完整性没有受到消息认证码的保护
FREAK攻击
强制服务器使用RSA Export Suite(512比特的RSA 和40比特的DES)是的低强度密码套件,经过暴力破解对称加密的密钥实现解密加密流量
攻击伪随机数生成器
利用证书时间差进行攻击
SSL/TLS 用户注意事项
不要误解证书的含义:证书只是确认了该服务器通过机构认证而不能说明是你要交互的服务器
密码通讯以前的数据不受保护
密码通讯以后的数据不受保护
第十五章 密码技术与现实社会
全部密码技术均可以看作是一种“压缩”技术
和确保整个明文的机密性相比,确保密钥的机密性更容易
和检查整个消息的完整性相比,检查散列值的完整性更容易
……
比特币
P2P网络:
依赖于全世界全部比特币用户组成的P2P网络
地址:
比特币交易在比特币地址之间完成
大多数状况下人们会为每一次比特币交易建立不一样的地址
比特币使用的地址油公钥散列值组成:将椭圆曲线DSA的公钥输入SHA-256和RIPEMD-160两个单项散列函数来求散列值,为其附加一些信息后再经过Base58Check运行编码转换成字符串。
为了防止混淆,Base58Cheak编码中不使用数字0 大写O、大写I及小写L
钱包
比特币交易的客户端
经过钱包生成密钥对,公钥用于接受比特币,私钥用于支付比特币
区块链
区块链就是保存所有交易记录的公共帐本,将交易以区块为单位组织起来
区块
一个区块由若干条交易以及一个区块头组成
区块头中保存了上一个区块的区块头散列值
区块头中保存全部交易的总体散列值(merkle root),SHA-256
保存一个名为nonce的任意数值、时间戳、
交易(A从B商店中购买商品,A向B支付1 BTC)
B建立公钥密钥对
B根据公钥生成地址发给A
A建立公钥密钥对
A建立交易:从地址A向地址B发送1BtC,A用刚建立的私钥对交易签名
A将交易广播到P2P网络
该交易和其余交易被一块儿打包到区块,并添加到区块链中
添加的区块被P2P网络确认后,该交易成立
相关文章
1.
密码技术探险——图解密码技术读书笔记
2.
图解密码技术一些笔记
3.
《图解密码技术》读书笔记(二)——DES算法原理
4.
《图解HTTP》阅读笔记
5.
图解http阅读笔记
6.
【图解密码技术】学习日记
7.
SEO实战密码阅读笔记
8.
java核心技术(ed10)阅读笔记
9.
技术管理之巅 阅读笔记
10.
Java核心技术 I 阅读笔记
更多相关文章...
•
RSS 阅读器
-
RSS 教程
•
XML 相关技术
-
XML 教程
•
Tomcat学习笔记(史上最全tomcat学习笔记)
•
JDK13 GA发布:5大特性解读
相关标签/搜索
阅读笔记
图解密码技术
源码阅读
阅读理解
MPC技术解读
密码学笔记
密码术
阅读
解密码
忘记密码
MyBatis教程
Redis教程
Thymeleaf 教程
技术内幕
乱码
代码格式化
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
正确理解商业智能 BI 的价值所在
2.
解决梯度消失梯度爆炸强力推荐的一个算法-----LSTM(长短时记忆神经网络)
3.
解决梯度消失梯度爆炸强力推荐的一个算法-----GRU(门控循环神经⽹络)
4.
HDU4565
5.
算概率投硬币
6.
密码算法特性
7.
DICOMRT-DiTools:clouddicom源码解析(1)
8.
HDU-6128
9.
计算机网络知识点详解(持续更新...)
10.
hods2896(AC自动机)
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
密码技术探险——图解密码技术读书笔记
2.
图解密码技术一些笔记
3.
《图解密码技术》读书笔记(二)——DES算法原理
4.
《图解HTTP》阅读笔记
5.
图解http阅读笔记
6.
【图解密码技术】学习日记
7.
SEO实战密码阅读笔记
8.
java核心技术(ed10)阅读笔记
9.
技术管理之巅 阅读笔记
10.
Java核心技术 I 阅读笔记
>>更多相关文章<<