共计 817 个字符,预计需要花费 3 分钟才能阅读完成。
Java 开发中常用的三种加密方式
前言:
常用术语解释:非对称加密:加密和解密所使用的的密钥不一致,通过非对称算法实现。对称加密:加密和解密所使用的密码是一致,使用的是对称算法。PUBLIC KEY:公钥。PRIVATE KEY: 私钥。信息摘要:通过一个算法使固定数数据产生一个特定的信息摘要。
1. 非对称加密。
典型的如 RSA,AES 等,常见方法,使用 openssl ,keytools 等工具生成一对公私钥对,使用被公钥加密的数据可以使用私钥来解密,反之亦然(被私钥加密的数据也可以被公钥解密 )。在实际使用中私钥一般保存在发布者手中,是私有的不对外公开的,只将公钥对外公布,就能实现只有私钥的持有者才能将数据解密的方法。这种加密方式安全系数很高,因为它不用将解密的密钥进行传递,从而没有密钥在传递过程中被截获的风险,而破解密文几乎又是不可能的,但是算法的效率低,所以常用于很重要数据的加密,常和对称配合使用,使用非对称加密的密钥去加密对称加密的密钥。
2. 对称加密。
加密者和解密者使用相同的密码,这种方式的优点是加解密效率高,缺点是安全系统偏低,因为中除需要传递密钥,所以有被截获的风险。传递密钥的过程常需要和对称加密方式配合使用,如上所述。常见的这种方式有 DES,AES.
3. 信息摘要。
将一段数据根据一定的算法换算出一个结果,相同的数据得出的结果肯定是唯一的,不同数据算出的结果肯定是不同的。这种方式常用于签名,如果数据被篡改了,那么验证肯定就不能通过。典型的算法如 md5 等。我所知在 web 中使用的例子:浏览器用服务器提交密码时可用 md5 算法将密码换算成 md5 值传递,而服务器的数据库也基本存的是密码的 md5(防止数据库被攻击泄露后直接被看到密码),所以可以直接比较 md5 就知道密码是否正确。虽然通过 md5 值逆向求出原值几乎不可能(之前好像听说过有人能办到), 但是由于使用频繁专门的 md5 值数据库记录了很多值所对应的 md5 值,所以有可能会被查到。
正文完
发表至: java
2019-11-07