没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
java 加密方式
一、Java 常用加密方式
1.Base64 加 密 算 法
2.MD5 加 密
3.对 称 加 密 算 法
4.非 对 称 加 密 算 法
5.数 字 签 名 算 法
6 国 密
7. 数 字 证 书
对称加密:
对称加密是指,加密方和解密方使用同样的秘钥来进行加密和解密。
在对称加密算法中,数据发信方将明文( 原始数据 )和加密 密钥 (mi yue)一起经过特殊加密算法
处理后,使其变成复杂的加密密文发送出去。
常用的对称加密算法:AES,RC4,3DES
传输的示意图如下所示:
非对称加密:
非对称加密算法实现机密信息交换的基本过程是:
1.甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;
2.得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;
3.甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
4.甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
非对称加密算法:RSA,DSA/DSS
传输的示意图如下所示:
实现原理:
让对方任意想一个 3 位数, 并把这个数和 91 相乘
如:256 乘以 91 结果为 24115
24115 乘以 11 结果为 265,265
这时 就可以知道对方的 3 位数了。
原因:91 乘以 11 等于 1001,而任何一个三位数乘以 1001 后,末三位显然都不变(例如 123 乘以 1001
就等于 123123)。
知道原理后,我们可以构造一个定义域和值域更大的加密解密系统。比方说,任意一个数乘以
400000001 后,末 8 位都不变,而 400000001 = 19801 * 20201,于是你来乘以 19801,我来乘以 20201,
又一个加密解密不对称的系统就构造好了。
甚至可以构造得更大一些:4000000000000000000000000000001 = 1199481995446957 *
3334772856269093,这样我们就成功构造了一个 30 位的加密系统。
其安全性就建立在算乘积非常容易,但是要把 4000000000000000000000000000001 分解成后面两
个数相乘,在没有计算机的时代几乎不可能成功!但如果仅仅按照上面的思路,如果对方知道原理,
知道我要构造出带很多 0 的数,根据 19801 和 8 位算法这 2 个条件非常容易穷举出 400000001 这个
目标值。
要解决这个问题,真实世界就不是使用乘法了,比如 RSA 算法使用的是指数和取模运算,但本质上
就是上面这套思想。
二、分类
1、按加密算法是否需要 key 被分为两类:
不基于 key 的有: Base64 算法、MD5
基于 key 的有: 对称加密算法、非对称加密算法、数字签名算法、数字证书、HMAC、RC4(对称加密)
2、按加密算法是否可逆被分为两类:
单向加密算法(不可解密):MD5、SHA、HMAC
非单项加密算法(可解密):BASE64、对称加密算法、非对称加密算法、数字签名算法、数字证书
三、应用场景
1.Base64 应用场景:图片转码(应用于邮件,img 标签,http 加密)
2.MD5 应用场景:密码加密、imei 加密、文件校验
3.非对称加密(SM2):电商订单付款、银行相关业务
二、Base64 加密
Base64 编码是一种基于用 64 个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输
一些二进制数据编码的方式
目的:出于数据加密的目的或者网络协议的限制或者特殊字符的处理等,通常需要将原文转
换为 base64 编码,比如:前台传递的 SQL、特殊参数、发送某些含有 ASCII 码表中 0 到
31 之间的控制字符的数据。
通常 Base64 的加密是用 sun.misc.BASE64Encoder。这个类是 sun 公司的内部方法,并没有
在 java api 中公开过,不属于 JDK 标准库范畴,但在 JDK 中包含了该类,可以直接使用。
剩余15页未读,继续阅读
资源评论
d1006799176
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功