2.6密码学算法技巧
2.6.1Hash算法
1)简介:Hash算法(又称散列算法、散列函数、哈希算法)是把任意长度的输入通过散列算法变成固定长度的输出,且不可逆的单向密码机制。Hash算法是密码学的重要分支,在数字签名和消息完整性检测等方面有广泛的应用
2)特点
正向快速:给定明文和Hash算法,在有限资源和有限时间内内计算出Hash值
逆向困难:给定Hash值,在有限时间内很难逆推出明文
输入敏感:原始输入信息修改一点信息,产生的Hash值会有很大不同
冲突避免:很难找到两段不同内容不同的明文,使得他们的Hash值一致(发生冲突)
3)主要场景
文件校验
数字签名
鉴权协议
4)常用的Hash算法
MD5(消息摘要算法)、SHA-1(安全散列算法1)、RIPEMD-160(种族完整性原语评估消息摘要)、SHA-256、SHA-512、SHA-2(安全散列算法2)

2.6.2对称与非对称加密算法
1)对称加密(DES(数据加密标准),3DES和AES等)
(1)DES算法
(2)3DES算法
(3)AES算法
(4)迭代模式
·电子密码本模式
·密文分组链接模式
·密文反馈模式
·输出反馈模式
·计数器模式

2)非对称加密算法:一种密钥的保密方法。需要两个密钥:一个是公开密钥(公钥),另一个是私有密钥(私钥)。公钥用作加密,私钥用作解密
算法主要有:RSA,Elgamal,背包算法,Rabin、D-H、ECC(椭圆曲线加密算法)
执行步骤顺序
1)先获取密钥对(KeyPair)对象
2)获取字符串的公钥/私钥
3)将字符串的公钥/私钥转换成为公钥/私钥类对象
4)使用类对象的公钥进行数据加密
5)使用类对象的私钥进行解答

(1)RSA算法简介
最广泛的应用莫过于HTTPS、SSH。安全性高,速度较慢
使用工具生成:
私钥:openssl genrsa -out private.pem 2048
公钥:openssl rsa -in private.pem -outform PEM -pubout -out public.pem


2.6.3椭圆曲线加密算法
ReadFull()函数用于从指定的读取器“r”读入指定的缓冲区“buf”,并且复制的字节与指定缓冲区的长度完全相等
curve25519.ScalarBaseMult ()根据私钥计算出公钥