公钥 私钥 签名 验签 说的啥?

简介: 公钥 私钥 签名 验签 说的啥?

公钥 私钥 签名 验签 说的啥?


公钥加密,私钥解密 私钥签名,公钥验签


散列算法


散列算法,也叫做哈希函数,是从一个任何一种数据中创建小的数字方法,散列函数把消息或者数据压缩成摘要,有时候也叫做摘要算法。把数据量变小,将数据的格式固定下来。

常用的算法有:MD5 SHA1


MD5


MD5 不是一种加密算法,是一种摘要算法,无论多长的输入, MD5 都会输出长度为 128bits 的一个串。


public static final byte[] computeMD5(byte[] content) {
    try {
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        return md5.digest(content);
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }
}


SHA1


SHA1 算法也是一个摘要算法, SHA1 比 MD5 更加安全,对于长度小于 2^64 位的消息,SHA1 会产生一个 160 位的消息摘要。


public static byte[] computeSHA1(byte[] content) {
    try {
        MessageDigest sha1 = MessageDigest.getInstance("SHA1");
        return sha1.digest(content);
    } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException(e);
    }
}

摘要算法有摘要特性和不可逆特性,一般用于检查文件的完整性数据签名的场景。

加密解密


加密,解密,其实就是将原来的明文文件,使用某种算法,进行计算,得到一段不可读的数据:"密文",是用来保护数据的,保证数据不被非法窃取。


加密算法


对称加密


对称加密,是指的就是:加、解密使用的是同一串秘钥,所以叫做对称加密,对称加密只有一个秘钥作为私钥。

640.png

常用算法有:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES


优缺点


对称加密比非对称加密算法效率很高,运行速度快,但是 不是非常安全,秘钥管理分发困难。


非对称的加密


指的是加、解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥,公钥加密,私钥解密,反之,私钥加密,公钥解密。

640.png

常用算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)


优缺点


安全性更高,公钥是公开的,私钥自己保存, 缺点是运行时间长,速度慢,适合对少量数据进行加密。


编码算法


Base64


Base64 算法就是编码算法,不是加密算法。Base64 编码的目的是把任意二进制编码成文本。


为啥要进行base64编码呢?


一般是因为二进制进行数据传输时,网络中间的有些路由会把 ascii 码中的不可见字符删除,导致数据不一致,因此一般会进行 url 进行 base64编码

测试代码:


String str="测试";
    String b64=Base64.getEncoder().encodeToString(str.getBytes("utf-8"));
    System.out.println("base64编码之后:"+b64);
    String ori=new String(Base64.getDecoder().decode(b64),"utf-8");
    System.out.println("base64解码之后:"+ori);

运行结果:


base64编码之后:5rWL6K+V
base64解码之后:测试

base64 编码


utf-8 -> base64(编码) -> ASCII


base64 解码


ASCII -> base64(解码) -> utf-8


URLEncode


Http协议中参数的传输是"key=value"这种键值对形式。


name1=value1&name2=value2

测试代码:


public static void main(String[] args) {
    //url编码
    String str="测试";
    String urlStr=URLEncoder.encode(str);
    System.out.println("url编码之后:"+urlStr);
    String deStr=URLDecoder.decode(urlStr);
    System.out.println("url解码之后:"+deStr);
}

运行结果


url编码之后:%E6%B5%8B%E8%AF%95
url解密之后:测试


签名验签


数字签名,就是通过可鉴别的数字信息验证身份的一种方式。

数据前面有两种运算:签名、验签。

  • 发送者使用可以代表自己身份的私钥进行签名。
  • 接受者使用私钥对应的公钥进行验签。这样就实现了对消息发送者身份的验证。


640.png



签名验签的作用


签名验签可以验证发送方身份,防止 中间人攻击 ,CSRF 跨域伪造身份攻击。


签名验签个过程


消息发送者:


  1. 报文明文(xml)转换成字节数组, UTF-8 编码。
  2. 使用 base64 进行编码,生成消息内容数据:msg
  3. 使用 SHA1 对字节数组进行签名。生成摘要数据:sign


消息接收者:


  1. 接受消息msg消息后进行 base64 解码。
  2. 使用 SHA1 算法进行数据msg+sign 验签。
相关文章
Layui 内置方法 - layer.close(关闭特定层)
Layui 内置方法 - layer.close(关闭特定层)
727 0
|
存储 对象存储
云效构建物上传到Packages统一管理报错 413 Request Entity Too Large 怎么解决?
云效构建物上传到Packages统一管理报错 413 Request Entity Too Large 怎么解决?
1297 0
|
NoSQL 关系型数据库 MySQL
什么时候使用MongoDB而不是MySql
MongoDB与MySQL对比:MongoDB适合非结构化数据、高并发读写、地理空间数据处理、实时分析和嵌入式应用,因其面向文档、高扩展性和地理空间索引功能。而MySQL在结构化数据、事务处理和严格一致性场景下更具优势。选择取决于具体需求。
809 7
|
4月前
|
JavaScript 前端开发 API
对比Vue框架与React库的主要区别
在选择Vue还是React时,考虑项目的需求、团队的熟悉程度和个人偏好至关重要。如果项目需要快速原型开发和较小的学习曲线,Vue可能是更好的选择。相反,如果项目需要更大的灵活性,或者项目团队已经有React的经验,那么React可能是更合适的选择。
228 13
|
10月前
|
传感器 算法
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
|
8月前
|
存储 监控 固态存储
Hyper-V启动慢卡顿,专业解决
针对Hyper-V启动慢卡顿问题,可采取以下优化措施:1. 硬件资源检查与优化,如内存和CPU的合理分配;2. 虚拟机设置调整,包括虚拟硬盘管理和启用动态内存;3. 网络设置优化,确保虚拟交换机配置正确;4. 系统服务管理,禁用不必要的服务;5. 安装最新系统更新并检查兼容性;6. 启用快速启动和清理系统垃圾文件。综合应用这些方法,能有效提升Hyper-V的启动速度和性能。
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
643 14
|
监控 安全 Java
使用JMX监控Tomcat
【7月更文挑战第18天】
304 3
|
IDE Go 开发工具
8-13|Cannot run program "C:\Users\Administrator\AppData\Local\Temp\GoLand\___8go_build__go.exe" (in
8-13|Cannot run program "C:\Users\Administrator\AppData\Local\Temp\GoLand\___8go_build__go.exe" (in
|
存储 监控 安全
Docker技术概论(8):Docker Desktop原生图形化管理(一)
Docker技术概论(8):Docker Desktop原生图形化管理(一)
2426 0

热门文章

最新文章