热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

终于学会使用公钥、私钥了

1、公钥、私钥的概念:私钥,即私人的钥匙,是唯一的,所以可以用来证明来源是特定的人。公钥,即公用的钥匙&#x

1、公钥、私 钥的概念:

私钥,即私人的钥匙,是唯一的,所以可以用来证明来源是特定的人。
公钥,即公用的钥匙,我可以将它给很多人。既然那么多人都知道,所以公钥不能证明来源一定是特定的人。

2、加密、签名 :

加密:用于防止信息外泄(泄露给不相关的人)
签名:用于确认身份(可以类比下生活中的签名)

3、 到底谁创建、拥有、使用 公钥、私 钥

3.1 当情景是签名、验签时:
3.1.1. A 想使用我的服务,为了安全,我不希望 A 以外的人可以使用这些服务
创建:
此时,我会要求 A 创建 一对 公私钥,私钥他自行保留(用于证明他自己的身份),公钥给我(用于验签–验证签名)
拥有:
此时我拥有 A 的公钥,A 拥有自己的私钥
使用:
A 请求我的服务时,使用私钥签名
我收到请求后,用 A 给我的公钥验签,验签通过即证明的确是A发送的请求,验证不通过就拒绝访问
3.1.2. 那如果 A 调用我的服务之后,需要我返回请求结果,但又要保证一定是我返回的请求结果呢?
创建:
此时,我 创建一对公私钥,私钥自行保留(用于证明我的身份),公钥给 A(用于验签–验证签名)
拥有:
此时 我拥有 自己的私钥,A 拥有我的公钥
使用:
我返回结果时,使用私钥签名
A 收到请求结果后,用我给A的公钥 验签,验签通过即证明的确是我返回的结果,验证不通过当然是拒绝访问
3.2.当情景是加密/解密时:
如果 A 要和 B 进行通讯:
A在发送消息时:A使用B的公钥进行加密;
B在接收信息时:使用自己的私钥 进行解密;
为什么不使用私钥加密?
因为使用私钥加密之后,拥有公钥的人都可以进行解密,那岂不是泄露了 A 和 B 之间的消息了。而使用对方的公钥加密,那么就只有对方的私钥可以解密,也就是说不会有第三方可以解密内容。

4、总结:

虽然对称密钥算法使用公钥加密,则使用私钥就可以解密;
使用私钥加密,则使用公钥就可以解密,但是不可以乱用。
签名、验签场景使用私钥签名,公钥验签确认发送者身份、报文是否被篡改。
加密、解密场景使用公钥加密、私钥解密保证数据安全。


推荐阅读
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
author-avatar
湘刘涛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有