加密和解密
1、种类hash算法对称式加密技术非对称式加密技术算法签名可以用hash算法,内部通信可以用对称加密,友商互联网之间用非对称加密2、散列算法、hash算法名称安全性速度md5安全低快SHA1安全性高慢2.1、 md5MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改MD5 都会输出长度为 128bits 的一个串四个和MD4设计有少许不同的步骤组成,(md2,md4被
1、种类
- hash算法
- 对称式加密技术
- 非对称式加密技术
算法签名可以用hash算法,
内部通信可以用对称加密,
友商互联网之间用非对称加密
2、散列算法、hash算法
名称 | 安全性 | 速度 |
---|---|---|
md5 | 安全低 | 快 |
SHA1 | 安全性高 | 慢 |
2.1、 md5
- MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改
- MD5 都会输出长度为 128bits 的一个串
- 四个和MD4设计有少许不同的步骤组成,(md2,md4被md5取代,md6失败了)
- 可能有的算法首位的0会丢(彼此不一样的代码,然后eq不相等的坑)
/**
* jdk的线程不安全,MessageDigest
* commons-codec ,DigestUtils.md5Hex ,安全(老了),
* spring ,DigestUtils 的只有md5,
* Guava部分功能上其实是ApacheCommon的一个子集,蛮新的
*/
public static final byte[] getMD53(String str) {
Hasher hasher = Hashing.md5().newHasher();
hasher.putString(str, Charset.forName("UTF-8"));
byte[] md5 = hasher.hash().asBytes();
return md5;
}
2.2、 SHA1算法
- SHA1 比 MD5 的 安全性更强
- 对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。
- 基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。
SHA-1、SHA-2、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256
/**
* md2
* md5
* SHA-1
* sha256
* SHA3-224
* SHA3-256
* SHA3-384
* SHA3-512
* SHA-384
* SHA-512/224
* SHA-512/256
还是commons-codec最香
*/
public static String ccSHA1(String src) {
if(StringUtils.isEmpty(src)){
return null;
}else{
System.out.println("cc sha1 - 1 :" + DigestUtils.sha1Hex(src.getBytes()));
System.out.println("cc sha1 - 2 :" + DigestUtils.sha1Hex(src));
return DigestUtils.sha1Hex(src.getBytes());
}
}
2.3、HMAC算法
- HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改。
- HMAC 算法实例在 多线程环境 下是 不安全的。
- 但是需要在 多线程访问 时,进行同步的辅助类,使用 ThreadLocal 为 每个线程缓存 一个实例可以避免进行锁操作。
- MAC算法可选以下多种算法:HmacMD5/HmacSHA1/HmacSHA256/HmacSHA384/HmacSHA512
2.4、 国密sm3
2.5、base64
这个不算加密算法,jdk8自带的最快,吧老的换了吧,速度大幅度提升
3、对称加密
名称 | 位数 | 安全 | 速度 |
---|---|---|---|
DES | 56 | 较低 | 中 |
3DES | 112位或168位 | 中 | 慢 |
AES | 128、192、256位 | 高 | 快 |
AES、DES、3DES 都是 对称 的 块加密算法,加解密 的过程是 可逆的
AES128、AES192、AES256 (默认安装的 JDK 尚不支持 AES256,需要安装对应的 jce 补丁进行升级 jce1.7,jce1.8)。
3.1、DES
- DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。
3.2、3DES
- 是基于 DES 的 对称算法,对 一块数据 用 三个不同的密钥 进行 三次加密,强度更高
3.3、AES
- AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性
- AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。
- 这个最好双方采用同样的代码,密码啥的,不同的模式可能代码不一样
模式
- ECB模式(默认)电码本模式 Electronic Codebook Book
- CBC模式 密码分组链接模式 Cipher Block Chaining(两端需要同时约定初始向量iv
- CFB模式: 密码反馈模式 Cipher FeedBack)(可以传入非16字节倍数的数据,适合流数据,也需要选择iv)
- CTR模式: 计算器模式 Counter(iv+1的获取比较负责,需要获取瞬时iv
填充
- 填充模式NoPadding、PKCS5Padding(默认)
*
4、非对称加密
名称 | 位数 | 安全 | 速度 |
---|---|---|---|
RSA | |||
ECC |
4.1、 RSA算法
RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一
第一个能同时用于 加密 和 数字签名 的算法
4.2、ECC
5、其他
5.1、PKCS7
PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关标准
5.2、X509
X509协议,是PKI技术体系中应用最为广泛、也是最为基础的一个国际标准。它的主要目的在于定义一个规范的数字证书的格式。
X509和PKCS都遵循ASN.1的语法。
X509,公钥证书,只包含公钥信息和一些基础信息。
P7,签名或加密。可以往里面塞x509,同时没有签名或加密内容。
P12,含有私钥,同时可以有公钥,有口令保护。
6、国密
名称 | 种类 | 对标 | 说明 |
---|---|---|---|
sm1 | 为对称加密 | AES相当 | SM1 。算法不公开,通过加密芯片的接口 |
sm2 | 非对称加密 | 安全强度比RSA 2048位高,运算速度快于RSA | 基于ECC |
sm3 | 消息摘要 | MD5 | |
SM4 | 对称算法(分组数据算法) | DES | |
sm7 | 对称密码 | 非接触式IC卡,门禁卡 | |
SM9 | 标识密码算法 | 标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)