# cipher **Repository Path**: kevinhasen/cipher ## Basic Information - **Project Name**: cipher - **Description**: 密码学入门 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-13 - **Last Updated**: 2021-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: cipher ## README # 密码学 ## 对称加密 代码是 DesDemo 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密 常见加密算法 - DES - 数据加密 - 加密的key必须是8位 - AES(常用) - 高级加密 - DES加强版,key必须是16位 由于加密后有负数,所以一般结合Base64转码使用(后面会解释) ### Base64 Base64可以将负数转为62个常见字母和斜杠和加号 Base64 算法原理 3个字节为一组,一个字节 8位,一共 就是24位 把3个字节转成4组,每组6位,不足8位,高位补0 这样做的好处在于base取的是后面6位,去掉高2位 , 那么base64的取值就可以控制在0-63位了 Base64构成 - 小写 a - z 26个字母 - 大写 A - Z 26个字母 - 数字 0 - 9 10个数字 - \+ / 两个字符 一个是64个,所以叫Base64 由于三个字节一组,不足位数,会使用等号补齐 ## 消息摘要 代码是 DigestDemo 也称为数字摘要 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的 比如MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出 但相同的输入必会产生相同的输出,弊端,超大型数据库可以存储常见的密码, 因为相同的原文总是计算出固定的密文,所以不安全,现在作用于文件加密 常见的算法 - MD5(常用) - SHA256 - SHA512(常用) 消息摘要不是使用base64进行编码的,所以我们需要把值转成16进制 ### 文件消息摘要 代码是 FileDomo 因为相同的原文总是计算出固定的密文,所以不安全,现在作用于文件加密 网上下载软件有些提供sha512或者md5可以进行校验是否原版软件 ## 非对称加密 代理是 RSAdemo 与对称加密算法不同,非对称加密算法需要两个密钥:`公开密钥(publickey)` 和`私有密(privatekey)` 因为加密和解密使用的是两个`不同`的密钥,所以这种算法叫作`非对称加密算法` - 如果使用私钥加密, 只能使用公钥解密 - 如果使用公钥加密, 只能使用私钥解密 常见算法 - RSA(常用) - ECC ## 数字签名 代码是 SignatureDemo [公钥](https://baike.baidu.com/item/公钥)数字签名 使用的是非对称加密和信息摘要结合使用 比如常见的ssl证书就是数字签名,用于网站https验证 常见的结合算法sha256withrsa和sha512withrsa