Java加密——加密/解密和签名/验签 概念知识
概念
- 加密/解密:
- 可以使用对称加密和非对称加密两种方式对数据进行操作。加密/解密更注重于对发送信息私密性的保护,只会将加密后的明文发送给目标,目标不解密是无法知道其具体内容的
- 签名/验签:
- 本质上也是一种加密,使用非对称加密对数据进行操作。签名/验签更注重于对发送信息正确性的验证,会同时将明文和加密后的明文(签名)发送给目标,目标将签名解密后,同明文进行比较,相同则是明文没有被篡改,不相同则表示数据明文不正确,不能使用。
- 对称加密:
- 加密与解密用的是同一把秘钥,处理速度快,常用的对称加密技术有DES,AES等。
- 适用情景:加密/解密
- 非对称加密:
- 加密与解密使用不同的密钥(成对生成),处理速度不及对称加密,常用的非对称加密技术有RSA等
- 适用情景:加密/解密和签名/验签
公私钥
- 加密/解密:公钥加密,私钥解密(私钥只有一个,公钥大家都知道)。
- 签名/验签:私钥加密,公钥解密(解密的来源是私钥,其它的来源是不可信任的)。
RSA加密/签名
- 定义
- RSA加密算法是一种非对称加密算法。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。
- RSA加密、签名使用情景
- (加密)一对情侣,B要给A发送一条消息,内容为一句情话,除了A不想让任何人知道。
- A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
- A把自己的公钥告诉B。
- B用A的公钥对情话进行加密。
- A接收到B加密的情话,利用A自己的私钥对情话进行解密。
- 在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被他人截获,情话也不会被他人知道,因为只有A的私钥才能对情话进行解密,防止了情话泄露。
- (签名)一对情侣,B要给A发送一条消息,内容为一句情话,A想确认下这句情话是否被人改过了。
- B生成一对密钥(公钥和私钥),私钥不公开,B自己保留。公钥为公开的,任何人可以获取。
- B用自己的私钥对情话加签,形成签名,并将签名和情话本身一起传递给A。
- A收到消息后,再获取B的公钥进行验签,如果验签出来的情话与情话本身一致,证明消息是B发送的。
- 在这个过程中,只有2次传递过程,第一次是B传递加签的情话和情话本身给A,第二次是A获取B的公钥,即使都被敌方截获,也没有危险性,因为只有B的私钥才能对情话进行签名,即使知道了情话内容,也无法伪造带签名的情话回复给B,防止了情话内容的篡改
- (加密)一对情侣,B要给A发送一条消息,内容为一句情话,除了A不想让任何人知道。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」