iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成)

2023-11-16

这里写图片描述

这里写图片描述

应用场景:集成支付宝SDK,会看见,p12文件也有。

非对称加密算法
一.运行终端,生成私钥

 1.cd /Users/mac/Desktop/iOS/加密

 2.openssl genrsa -out private.pem 512 //生成私钥,注意:这个私钥其实是放在服务器的

 3.openssl rsa -in private.pem -out public.pem -pubout //通过2生成的私钥获取公钥

 4.我们会发现已经在加密文件下,创建成功了两个文件 

 5.cat private.pem  //打开私钥,可以看见base64编码的文件格式 

 6. openssl rsa -in private.pem -text -out private.txt  //转换成明文格式打开看看

RSA加密使用效率偏低,它有哪些应用场景呢?

我们都知道私钥是放在服务端的,公钥是在客户端的。何为公钥?公钥可以理解为公共钥匙,任何客户端都可以向服务器获取公钥。当你的项目在被做逆向的时候,其他人就可以模仿客户端来获取公钥,所以没有绝对的安全,只有相对的安全。因此我们的重要数据仍然需要做加密处理。我们知道OC的方法调用和函数调用是不一样的,方法调用可以显示方法名,而函数调用则返回的是内存地址。所以在大公司中,一些核心算法都是使用的C。

客户端与服务器加密数据传递的实际操作-数字签名

这里写图片描述

客户端将数据传递给服务器的时候,很有可能在传递过程中被其他人员拦截,并修改,再发送给服务器,此时,服务器收到数据后是没有办法判断此数据是否是被修改过的,那么有什么解决办法呢?我们可以使用数字签名。

数字签名流程

客户端:

  1. 数据报文(客户端发送给服务器的数据),通过HASH算法进行MD5加密获取32位字符串(数据指纹),注意此MD5字符串是不可逆的
  2. 再通过RSA使用公钥加密算法加密MD5字符串,加密之后的密文就是数字签名
  3. 同时把数据报文与数字签名发送给服务器

服务器:

  1. 服务器拿到数据报文与数字签名后,通过私钥解密数字签名,拿到MD532位字符串
  2. 再把数据报文进行MD5加密,获取加密后的MD532位字符串
  3. 服务器通过步骤1和步骤2分别获取的MD5串对比,判断此数据报文是否有被篡改过

PKCS

PKCS是什么呢?

Public-Key Cryptography Standards (PKCS)是由美国 RSA 数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议

这里写图片描述

开发中证书的生成

这里写图片描述

我们实际开发中需要p12文件和.der两个文件

这里写图片描述

下篇文章介绍RSA加密算法的代码实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成) 的相关文章

  • iOS进阶_密码学进阶(一.对称加密算法简介)

    加密算法 HASH 散列函数 不可逆 密码 识别 文件 识别 以下两种加密算法 都是可逆的 明文 gt 加密 gt 密文 密文 gt 解密 gt 明文 对称加密 传统加密算法 加密和解密使用同一个 密钥 密钥的保密工作就非常的重要 密钥会定
  • iOS进阶_密码学进阶(二.对称加密算法代码演练)

    对称加密算法代码演练 终端测试指令 DES ECB 加密 echo n hello openssl enc des ecb K 616263 nosalt base64 DES CBC 加密 echo n hello openssl enc
  • iOS架构师_观察者模式

    定义 观察者模式 有时又被称为模型 视图 View 模式 源 收听者 Listener 模式或从属者模式 一个目标物件管理所有相依于它的观察者物件 并且在它本身的状态改变时主动发出通知 这通常透过呼叫各观察者所提供的方法来实现 此种模式通常
  • iOS进阶_密码学(四.抽取登录网络请求的单例)

    登录业务逻辑完善 在网络开发中 一般会有一个单例负责所有的网络请求 将这个网络登录的部分代码抽取出来 新建一个 类 复制方法 调整参数 测试登录能否成功运行 WTNetworkTools h import
  • iOS中socket通信---基于CocoaAsyncSocket实现

    前言 最近项目中涉及到socket通信这块 所以有幸有时间大概看了一下这一块 目前还在实现阶段 因此现在还不能去些具体的实现过程 现在只大概描述一下这几天看的资料和自己的一点心得吧 等项目实现之后会将具体的实现流程写出来以供大家参考 Soc
  • iOS进阶_GCD(二.GCD串行队列&并发队列)

    GCD 核心概念 将任务添加到队列 指定任务执行的方法 任务 使用block封装 block 就是一个提前准备好的代码块 在需要的时候执行 队列 负责调度任务 串行队列 一个接一个的调度任务 并发队列 可以同时调度多个任务 任务执行函数 任
  • iOS架构-组件化(项目实战-项目首页架构)

    UI架构设计 设计模式 外观模式 代理模式 适配器模式 adapter 注意 一版本只是搭建结构 一 1 0 Tab搭建 二 1 1 新增UICollectionView 主页 gt 整体设计基于 gt UICollectionView 滑
  • iOS架构师_架构模式(代理,block,通知,MVC,MVP,MVVM)

    1 什么是架构 没有明确的定义 属于设计的一方面 没明确的把设计和架构进行区分 它可以小到类与类之间的交互 大到不同模块之间 以及不同业务之间的交互 都可以从架构的层面去理解它 所有架构和设计模式的目的都是为了解耦合 2 基本的架构基础 案
  • iOS进阶—Runtime源码解析:动态方法解析

    GitHub参考 PS 参考GitHub分享的objc runtime master代码 及Runtime003代码 iOS进阶 目录 接上文iOS进阶 Runtime源码解析 消息发送 查看Runtime源码 No implementat
  • iOS核心动画CoreAnimation系统进阶(赛贝尔曲线-菜单侧滑动画拆分动画详解)

    我们知道动画是基于绘制的 多次绘制贝塞尔的过程就会形成动画 流畅的动画效果会给用户带来不一样的使用体验 下面我们就让App开发中经常使用到的侧滑动画进行拆分详解 效果图如下 为侧滑动画封装一个slideMenuView 绘制侧滑动画需要下面
  • iOS进阶_多线程(二.线程间的状态)

    ViewController m 004 NSThread状态 Created by mac on 2018 4 27 Copyright 2018年 mac All rights reserved import ViewControlle
  • iOS架构-组件化(Carthage管理工具)

    一 Carthage项目管理工具使用 Step 1 安装 更新Homebrew工具 1 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install ma
  • iOS架构师_SDWebImage源码分析

    1 对SDdemo的分析 针对SD的3 8 2版本进行分析 因为从git上面直接下载SD的源码 项目运行会报错 缺少libwebp这个库 我们下载3 8 2版本 运行 libwebp 是个webp的图片格式 属于谷歌的库 所以只能翻墙去国外
  • Objective-C实现链式编程语法(DSL)

    您越着急开始写代码 代码就会花费越长的时间 Carlson University of Wisconsin 前言 熟悉Objective C这一门编程语言的人都知道 Objective C中方法的调用都是通过中括号 实现的 比如 self
  • iOS进阶_密码学(二.钥匙串访问)

    网络开发中的原则 在网络上不允许传输用户的明文隐私数据 在本地不允许保存用户的明文隐私数据 类似于QQ 微信的记住密码 在客户端本地保存用户加密后的密码 NSUserDefaults 明文保存才能反算 能够反算的算法 钥匙串访问 开放给开发
  • iOS架构师_消息转发机制

    1 动态方法解析 对象在收到无法处理的消息时 会调用下面的方法 前者是调用类方法时会调用 后者是调用对象方法时会调用 未实现类方法调用 BOOL resolveClassMethod SEL sel 未实现实例方法调用 BOOL resol
  • iOS开发之Runtime运行时机制

    摘要 Objective C是基于C加入了面向对象特性和消息转发机制的动态语言 除编译器之外 还需用Runtime系统来动态创建类和对象 进行消息发送和转发 作者通过分析Apple开源的Runtime代码来深入理解OC的Runtime机制
  • iOS进阶_Log分类打印日志自动转换中文

    description方法是NSObject类的一个实例方法 因此所有的Object C对象都有description方法 description方法返回的永远是字符串 对于一个Person类 如果没有重写description方法 NSL
  • iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成)

    应用场景 集成支付宝SDK 会看见 p12文件也有 非对称加密算法 一 运行终端 生成私钥 1 cd Users mac Desktop iOS 加密 2 openssl genrsa out private pem 512 生成私钥 注意
  • iOS开发 多线程的高级应用-信号量semaphore

    在iOS开发的道路上 多线程的重要性不言而喻 大部分我们都停留在基础的使用上面 缺乏高级应用 缺乏提升 是因为我们面对他太少 复杂的事情重复做 复杂的事务基础化 差距就是这样拉开了 言归正传 今天讲讲GCD的高级应用之信号量篇 一 信号量的

随机推荐

  • 【python爬虫】爬虫程序模板(面向对象)

    爬虫代码模板 程序结构 class xxxSpider object def init self 定义常用变量 比如url或计数变量等 def get html self 获取响应内容函数 使用随机User Agent def parse
  • 了解 HTTP3.0 吗?简要说一下 HTTP 的一个发展历程?

    码字不易 有帮助的同学希望能关注一下我的微信公众号 Code程序人生 感谢 代码自用自取 一 HTTP 3 0 HTTP3 0 也称作HTTP over QUIC HTTP3 0的核心是QUIC 读音quick 协议 由Google在 20
  • 埋点数据

    原文源自 http www woshipm com pmd 751876 html 本文作者将从一个埋点系统设计者的角度通俗系统地讲解埋点的全过程 涉及到埋点基础知识 埋点作用 埋点方法 埋点数据流程 埋点应用 埋点管理等信息 埋点是什么
  • STM32之中断与事件---中断与事件的区别

    转自http blog csdn net flydream0 article details 8208463
  • docker添加新的环境变量_关于docker:在Dockerfile中,如何更新PATH环境变量?

    我有一个从源代码下载和构建GTK的dockerfile 但以下行没有更新我的图像的环境变量 RUN PATH opt gtk bin PATH RUN export PATH 我读到我应该使用ENV来设置环境值 但以下指令似乎也不起作用 E
  • conda的安装与使用

    conda的安装与使用 一 conda可以干嘛 官方介绍 Anaconda 是一个包含数据科学常用包的 Python 发行版本 它基于 conda 一个包和环境管理器 衍生而来 你将使用 conda 创建环境 以便分隔使用不同 Python
  • 苏神文章解析(6篇)

    苏神文章解析 文章目录 苏神文章解析 1 浅谈Transformer的初始化 参数化与标准化 1 1采样分布 截尾正态分布 1 2 正交初始化 Xavier初始化 1 3 直接标准化 1 4 NTK参数化 1 5 残差连接 2 模型参数的初
  • 图像边缘算法——计算图像边缘(OpenCV)

    目录 一 算法描述 二 计算欧氏距离的Python代码 三 完整的代码 四 结果 一 算法描述 算法的基本原理是 将当前像素与邻接的下部和右部进行比较 如果相似 则将当前像素设置为白色 否则设置为黑色 如何判定像素相似呢 应用欧式距离算法
  • 吐血整理!Python程序员常见的几种变现方式!

    今天聊一个特俗但是大家都想的事情 那就是 赚钱 这件事 先说为什么这个事情 特俗 因为其实我发现我身边大部分程序员不爱谈钱 或者羞于谈钱 加上程序员工资普遍比较高 所以早期都没啥压力 但是随着年龄增大 薪资的涨薪幅度放缓 问题逐渐就暴露出来
  • n个人围成一圈 报数3 python

    n int input count 0 a list range 1 n 1 while len a gt 1 b a for i in range len a count 1 if count 3 0 a remove b i print
  • 不能使用clr编译c文件 怎么强制用clr_一名合格的 C/C++ 开发者拥有这些能力,你就可以去面试了!...

    首先你需要一个显得十分有 经验 的发型 然后拥有一身程序员的基本装备 比如 言归正传 在大多数开发人员的认知中 C C 是一门非常难学的编程语言 很多人知道它的强大 但因为 难 造成的恐惧让很多人放弃 在我看来 C C 一旦学成 其妙无穷
  • Hive简介和安装

    1 Hive是基于hadoop的数据仓库解决方案 由facebook贡献给Apache Hive出现的初衷是让不熟悉编程的数据分析人员也能够使用hadoop处理大数据 这是怎么实现的呢 2 我们先来看看Hive提供的接口 从下面Hive的架
  • Tesseract3.02训练生成新的识别语言库的详细步骤

    说明 本文参考了很多前辈的资料 主要是 tesseract OCR3 0语言库训练步骤 再结合自己的实践操作 个人感觉官网的教程是最权威的 耐着性子看完 收获很大 比网上到处看别人理解的更好 毕竟每个人理解的都是自己的 不全面 当然也包括本
  • Vue键盘事件

    一 keydown和keyup的区别 keydown 和 keyup 是JavaScript中用于捕获键盘按键事件的两个事件类型 它们有以下区别 触发时机 keydown 事件在按下键盘上的键时触发 无论是否已释放 keyup 事件在释放键
  • 深度学习之自编码器(2)Fashion MNIST图片重建实战

    深度学习之自编码器 2 Fashion MNIST图片重建实战 1 Fashion MNIST数据集 2 编码器 3 解码器 4 自编码器 5 网络训练 6 图片重建 完整代码 自编码器算法原理非常简单 实现方便 训练也较稳定 相对于PCA
  • 知识图谱基础代码构建(医疗向)

    今天上线发现自己竟然涨粉了 也给了我更大的动力将这一方面继续记录下去 这里是对另外一个项目代码的解读 个人认为是对前面连续几篇中文医疗知识图谱的解读的一个补充 有着拨云见日的作用 项目来源是GitHub上面刘老师做的一个基于知识医疗图谱的问
  • 【linux】——动静态库

    目录 动静态的比较 扩展名 编译操作 执行的状态 生成静态库 生成动态库 总结 在linux操作系统中 函数库是一个非常重要的的东西 因为很多软件之间都会互相使用彼此提供的函数来使用其特殊的功能 例如 我们在写c语言的时候 但我们要使用pr
  • 【人工智能】5.不确定性推理

    一 不确定推理预备知识 1 不确定性推理的含义 不确定性推理实际上是一种从不确定的初始证据出发 通过运用不确定性知识 最终推出具有一定程度的不确定性但却又是合理或基本合理的结论的思维过程 2 不确定推理基本问题 1 不确定性的表示 知识的不
  • 带环单链表及链表相交问题的分析及代码实现

    什么样的是带环单链表 什么样的是不带环单链表 带环单链表就是单链表的尾结点有连接到单链表自身的某一个结点构成了环 首先 我们怎样检测一个单链表是否带环 1 检测单链表是否带环 如果链表不带环 可以通过遍历链表找到尾节点 那如果单链表带环 就
  • iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成)

    应用场景 集成支付宝SDK 会看见 p12文件也有 非对称加密算法 一 运行终端 生成私钥 1 cd Users mac Desktop iOS 加密 2 openssl genrsa out private pem 512 生成私钥 注意