美文网首页
IOS编码与加密

IOS编码与加密

作者: 一个老实人 | 来源:发表于2019-10-04 23:06 被阅读0次

在介绍之前现在说明一下,编码与加密呢其实不是同一概念,编码是编码,加密是加密。

编码:把我们的一些数据比如图片,明文等等,以另一种表现形式出来,发送出去,然后接收的一端呢在解析出来。
被编码的数据是可以被解析的(解码)

加密:加密后的数据是不可以被解析,它安全性更高。

举个例子:我们注册账号的密码,肯定是加密而不是编码。如果是编码,一旦被人截取到在解析,你的账号就会被盗。

iOS 中base64编码

1.通过代码实现

//解码的内容是字符串 “Hello, World!”
        NSString *str = @"Hello, World!";
        
        //base64编码
        NSData *data1 = [str dataUsingEncoding:NSUTF8StringEncoding];
        NSString *dataStr1 = [data1 base64EncodedStringWithOptions:0];
        NSLog(@"编码:%@",dataStr1);

        打印结果:SGVsbG8sIFdvcmxkIQ==
        Hello, World! 的base64编码就是 “SGVsbG8sIFdvcmxkIQ==”
        
        然后在用“SGVsbG8sIFdvcmxkIQ==” 解码
        //base64解码
        NSData *data2 = [[NSData alloc]initWithBase64EncodedString:@"SGVsbG8sIFdvcmxkIQ==" options:0];
        NSString *dataStr2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
        NSLog(@"解码:%@",dataStr2);

        打印结果:Hello, World!
屏幕快照 2019-10-04 22.36.53.png

2.通过终端实现(mac 上自带base64编码)

字符串编码
//编码
$ echo -n 这里是字符串 | base64
//解码
$ echo -n 这里是base64编码 | base64 -D
--------------------------------------------------------
--------------------------------------------------------
文件编码:(文件编码一般都用.txt)
假设编码 img.png 这张图片
cd到文件目录下
//编码
$ base64 img.png -o img.txt
//解码
$ base64 -D img.txt -o img.png  

加密:

加密从以前到现在出现了很多加密的形式,不同的加密方法应用也不同,各有各的优点。
在 iOS中,不管是HASH 还是对称 非对称苹果都已经有了,在<CommonCrypto/CommonCrypto .h>这个库里面

1.HASH 也叫(散列函数)

1.MD5:(32个字符)
2.HMAC
3.SHA1/512

特点:
1.算法公开
2.对相同的数据加密,得到的结果一样
3.对不同的数据加密,得到的结果是定长的
4.不能反算
5.用来做数据的识别

在终端中使用 $ MD5 -s "这里是加密的内容"

对于MD5来说,虽然加密后不可以解密,但是有些网站也能查询出来,因为那些网站存有大量MD5数据,所以在使用MD5这种方式时要使用一种方式叫 “ 加盐 ”,就是在用户的密码后面加一段特殊的符号。这种方式可以杜绝别人通过一些网站查询出用户密码,但是注意这窜特殊的符号别泄露出去。

2.对称加密 (传统加密算法)

DES :(早期的加密算法,加密强度不够高,被淘汰)
3DES:(需要3个密钥加密,然后同过3个密钥进行解码,过程太复杂,没人用)
AES(高级密码标准) 美国的安全局 苹果的钥匙串就是用的这种方式

特点:
1.加密之后可以反算回来
2.明文通过密钥加密
3.加密后的数据通过密钥解密
3.注意要保护密钥

加密方式:
ECB:电子代码本,每一块数据独立进行加密
CBC:密码块链,使用一个密钥和一个初始化向量对数据进行加密,每一块的加密都需要前面的数据做依赖,每一块数据解密都依赖前一块数据可以保证数据的完整性,一般用于防范切听

$ openssl enc -des-ecb -K 616263 -nosalt -in messge.txt -out msg1.bin
这里的616263是ASCLL码 对应的就是小写abc
注:用des这个算法  ecb 这个方式  key是 616263  加密messge.txt 输出 msg1.bin

3.非对称加密(RSA)--现代加密算法

genres 生成一个RSA私钥
rsautl 使用RS密钥进行加密,解密,签名和验证等运算
rsa 处理RSA密钥的格式转换等问题


$ openssl genrsa -out private.pem 1024
注:1024 是 这个私钥的长度是1024个比特位(bi t)

$ openssl rsa -in private.pem -pubout -out public.pem
注:从私钥中提取公钥
#利用公钥加密  
$ openssl rsautl -encrypt -in messge.txt  -inkey public.pem  -pubin -out enc.txt
注:通过公钥public.pem 把 messge.txt 加密为enc.txt 输出
#私钥解密
$ openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dnc.txt
注:使用私钥解密
#利用私钥加密(签名)  
$ openssl rsautl -sign -in dnc.txt -inkey private.pem -out enc2.txt
#公钥解密
$ openssl rsautl -verify -in enc2.txt -inkey public.pem -pubin  -out messge.txt
注:使用私钥解密

对称加密适合加密大的数据非对称适合加密小的数据,由于对称加密都是用密钥加密解密的,所以在传递的过程中,对称加密的密钥可以用非对称来加密,这就是对称和非对称的混合使用

相关文章

  • IOS编码与加密

    在介绍之前现在说明一下,编码与加密呢其实不是同一概念,编码是编码,加密是加密。 编码:把我们的一些数据比如图片,明...

  • iOS - 程序加固APP安全防护

    常用的加固方式 URL编码加密 对iOS app中出现的URL进行编码加密,防止URL被静态分析 本地数据加密 对...

  • 防护IOS APP安全的几种方式(详解)

    1.URL编码加密对iOS app中出现的URL进行编码加密,防止URL被静态分析2.本地数据加密对NSUserD...

  • 常见编码加密解密Base64,URL ,GZIP,DES,RSA

    常见编码加密解密的基础用法 Base64编码 URL编码 GZIP AES加密 DES加密 RSA加密 编码 加密工具类

  • DES加密 解密 java和iOS 保持一致

    1.java/android DES加密解密 base64编码用的jdk1.8 2.iOS DES加密解密

  • AES加密 - iOS与Java的同步实现

    AES加密 - iOS与Java的同步实现 AES加密 - iOS与Java的同步实现

  • 编码与加密

    一、阅读基础 1、基础 一、Base64编码与解码 2、原理 4、代码实现 Base64编码 Base64解码 二...

  • IOS 编码 加密 漫谈

    加密分为对称加密和非对称加密 Base64编码 1.Base64简单说明 描述:Base64可以成为密码学的基...

  • 2020-08-11

    学习一下iOS常用的数据编码方案和加密方案 我们平时所接触的大多数是base64编码、UTF-8和一些加密算法(m...

  • 字符编码本质

    假设已对对称加密有基本了解,以密码学的角度看编码 字符编码本质是: 加密(对称加密) 编码方式本质: 1.加密方式...

网友评论

      本文标题:IOS编码与加密

      本文链接:https://www.haomeiwen.com/subject/qkgspctx.html