搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小惠珠哦
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
SSL网关国密标准GMT0024-2014_gmt0024标准
2
基于FPGA的VGA字符显示_基于fpga的vga多行汉字显示
3
将数据库表导入到solr索引
4
秋招 FPGA工程师 面试题最全总结_fpga工程师反问
5
2024-北京智源大会-通用人工智能的关键问题及思考-李开复、张亚勤_智源大会会议具身智能层面机器人和自动驾驶的机会评价
6
阿里天池数据分析入门 利用Pandas分析数据_阿里天地数据
7
【2022级研究生人工智能高级语言程序设计考试说明】_研究生高级语言程序设计
8
SpringBoot整合dubbo3.0+nacos2.0以及zookeeper_dubbo3 整合 gateway
9
为何同一PDF文档用不同软件打印效果不同?
10
疫情开发下的2023年是否会再现“金三银四“招聘热季?_金三银四已结束
当前位置:
article
> 正文
加密算法学习以及base64加密解密应用
作者:小惠珠哦 | 2024-07-06 17:17:41
赞
踩
加密算法学习以及base64加密解密应用
加密算法
关于多表单在项目中的应用主要是上传文件,因为所有上传lms的操作,必须校验username&password两个关键参数。由在解决这个问题的过程中,无论是使用自己写的拼接method又或者调用AFNetWorking的上传函数(里面已经实现了多表单的拼接),在WireShark中检查的格式也是正确的,后台也无法解析获得正确参数,因此采取了把参数放置http header的方式来传递参数。
但因为http header的内容是通过抓包工具便可轻易获取的,而且内容又是明文,因此用于传输密码参数是极其不安全的,因此需要用到加密算法。
而加密技术分别有两大类,分别是对称式加密技术与非对称式加密技术。
对称式加密技术
对称式加密就是加密和解密使用同一个
密钥
,通常称之为“Session Key ”这种
加密技术
在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”
加密法
,它的Session Key长度为56bits。
密钥是用于加密解密的一个特殊字段,需要加密的数据与密钥经过相对应的算法运算后会获得相应的密文。
但由于密钥是公开的,因此若加密了的消息被第三方截获后,第三方还有可能解码,获得传输的明文。
对称式加密算法的优点是速度快,但安全性较非对称式加密技术低。
非对称式加密技术
非对称式加密就是加密和解密所使用的不是同一个
密钥
,通常有两个密钥,称为“
公钥
”和“
私钥
”,它们两个必需配对使用,否则不能打开加密文件。这里的“
公钥
”是指可以对外公布的,“
私钥
”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难不把
密钥
告诉对方,不管用什么方法都有可能被别
窃听
到。而非对称式的加密方法有两个
密钥
,且其中的“
公钥
”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的
私钥
即可以,这样就很好地避免了密钥的传输安全性问题。
非对称加密技术的安全性更高,但加密解密速度较慢。
若想更好地理解公钥、私钥、数字证书的概念可以参考《
图说公钥、私钥与数字证书
》
base64加密解密应用
base64在本项目中用于解决文件上传时,传递username、password关键参数的功能。因为多表单于后台无法获取关键参数,因此只好把username、password放置到http header中。
因此需要base64 这种八位可逆的加密解密算法,将明文转成密文。
具体实现如下。
关于加密算法,针对项目需要,采用base64可逆加密算法实现关键信息的保护。具体实现如下:
//string to base64 string
+ (
NSString
*) DataConvertBase64ByString:(
NSString
*) originStr{
NSData
* originData = [originStr
dataUsingEncoding
:
NSUTF8StringEncoding
];
NSString
* encodeResult = [originData
base64EncodedStringWithOptions
:
NSDataBase64EncodingEndLineWithLineFeed
];
return
encodeResult;
}
关于
DataConvertBase64ByString method是通过调用原生的
base64EncodedStringWithOptions method实现base加密,其中二进制数据的格式必须与服务器统一,项目中采用的是UTF-8.
//name omit for security
+ (
NSString
*) keyOmit:(
NSString
*) key{
if
([key
isEqualToString
:
@"username"
]) {
return
@"u"
;
}
else
if
([key
isEqualToString
:
@"password"
])
return
@"p"
;
return
nil
;
}
关于
keyOmit method的作用是为了隐藏参数意义的作用。
参考文章:
《base64编码解码原理》
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小惠珠哦/article/detail/793523
推荐阅读
article
完美解决
ubuntu
遇到
sudo
:
pip
:
command
not
found
_
sudo
:
...
ubuntu
遇到
sudo
:
pip
:
command
not
found
。
pip
可以用,但是用到
sudo
pip
,表...
赞
踩
article
Unity
读取
Json
常用
的
几种方式_
unity
访问
json
...
使用
的
命名空间如using Lit
Json
;using System.Collections.Generic;using...
赞
踩
article
JAVA
高频216道
面试
题+答案!!
面试
必备
,
2024年最新
java
微
服务
架构
面试
题_
java
最新框...
当线程 A 持有独占锁a
,
并尝试去获取独占锁 b 的同时
,
线程 B 持有独占锁 b
,
并尝试获取独占锁 a 的情况下
,
就会...
赞
踩
article
Dart
基础
篇
-所有
知识点
架构
_
dart
的底层
架构
...
一丶
Dart
基础
第1
篇
:
Dart
介绍、
Dart
环境搭建、
Dart
开发工具二丶
Dart
基础
第2
篇
:变量、常量、命名规则...
赞
踩
article
【
kafka
专栏】
生产者
客户端自定义
分区
器实现向
指定
分区
发送消息_
kafka
发送数据
指定
partit...
一、
生产者
默认
分区
策略
分区
策略作用就是指消息根据什么规则,被发往主题的哪个
分区
。默认策略一:如果
生产者
指定
了partit...
赞
踩
article
【
NLP
自然语言
处理】
自然语言
处理
技术
难点和挑战_
自然语言
的
数据
获取和
标注
的
困难怎么解决...
一、**
NLP
技术
对
标注
数据
依赖性较高,难以在
标注
数据
稀缺
的
任务、语言或领域内发挥作用。**此前小米首席
NLP
科学...
赞
踩
article
毕业设计
(十九)、
基于
Android
的简约
记账
APP
_
基于
android
的
记账
app
...
2. 登录后跳转到
APP
主页,显示当月支出总额、预算剩余(预算可设置),显示今日支出列表,比如账目名称、时间、金额等信息...
赞
踩
article
如何
理解
:
业务
架构
、应用
架构
、数据
架构
、技术
架构
与
系统
和
复杂度
...
????目录1 关于
系统
的
理解
2 关于
架构
的
理解
3 关于复杂的
理解
4 后记体系化地看待
系统
,高维地抽象
业务
,有效地进行建...
赞
踩
article
Unity
射击
游戏
开发教程:(
30
)
如何
让玩家
追踪
敌人
...
因此,我们使用 _direction 全局变量,该变量总是在更新中重新计算,并将其乘以我们的激光速度变量,该变量只是在 ...
赞
踩
article
可倾式
回转
工作台
设计
【论文
、
CAD图纸
、
开题报告
、
任务书
、
答辩PPT…】...
为了提高
工作台
的
回转
精度,本
设计
采用端齿盘用作锁紧装置,液压作为驱动装置。该
可倾式
回转
工作台
提供了一种动作结构紧凑
、
操作...
赞
踩
article
【
从零开始
AI绘画6】
StableDiffusionWebUI
拓展
的安装方法以及推荐的几个
拓展
_we...
本文详细介绍了如何在AI绘画中安装和管理插件,包括WebUI内置下载、gitclone方法,以及推荐的几个关键插件如汉化...
赞
踩
article
m>Flink
m> 原理与实现:如何生成
m>Strea
m
Graph
m>_
m>flink
m>原理strea
m
executio...
继上文
m>Flink
m> 原理与实现:架构和拓扑概览中介绍了
m>Flink
m>的四层执行图模型,本文将主要介绍
m>Flink
m> 是如何根据用...
赞
踩
article
jenkins
中无法连接仓库:Error
performing
git
command
:
git
l...
然后先添加账号密码,再去吧
git
地址粘贴上去 看看是不是解决了!新建任务的时候,连接仓库不成功,显示如土壤。查看
git
目...
赞
踩
article
VsCode 加载web视图报错 :
Error
loading
webview
:
Error
: C...
vscode加载web视图报错!_error
loading
webview
: error: could not reg...
赞
踩
article
Day450
&451&452.
Kafka
架构
深入
&
Kafka
API -
kafa
...
Kafka
架构
深入
一、
Kafka
工作流程及文件存储机制工作流程每个分区中,对应的offset偏移量为区内有序,不是全...
赞
踩
article
【
macOS
系统】配
maven
报
zsh
:
command
not
found
:
mvn,解决不了??...
macOS
系统配
maven
还在报
zsh
:
command
not
found
:
mvn???,强烈推荐看这篇文章,保姆式...
赞
踩
article
Redis
教程:
Redis
缓存
和
MySQL
实现
一致性
_
redis
mysql
完美结合...
在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以需要使用
redis
做一个缓冲操作,让请求先访问到...
赞
踩
article
Unity
Meta
Quest
一体机开发(十二):【手势追踪】
Poke
交互
- 用手指
点击
由 ...
这篇教程将会介绍如何用
Meta
的 Interaction SDK,配置
Poke
交互
,实现用手指
点击
UI
按钮
的...
赞
踩
article
max30102
代码
分析
总篇...
主要介绍的是arduino中这个库。这个库可以在arduino中直接搜索下载。主要
分析
的是SpO2这个部分。exampl...
赞
踩
article
mysql
的
left
join
、
right
join
和
join
的区别_
mysql
left
joi...
1、
left
join
左连接2、
right
join
右连接3、
join
也就是“inner
join
”,为了简写才写...
赞
踩
相关标签
ubuntu
pip
python
程序人生
java
架构
面试
flutter
android
移动开发
dart
kafka
分布式
android毕业设计
安卓毕业设计
毕业设计
课程设计
unity
游戏引擎
制造
AI作画
jenkins
gitee
运维