iOS中的加密实现

在一个App登录的时候或者是一些个人信息输入的时候都需要有加密算法的实现来确保安全。

加密算法通常分为对称性加密算法和非对称性加密算法.

对称性加密算法:信息接收双方都需事先知道密匙和加解密算法且其密匙是相同.

非对称算法:发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密.
加密

加密分为两种,对称加密和非对称加密。
所谓的对称,就是指加密秘钥和解密秘钥相同,而非对称自然就是指两者不同。

对称加密的优点在于速度快,但是假设秘钥由服务器保存,如何安全的让客户端得到秘钥是需要解决的问题。

常见的一个非对称加密算法是 RSA 算法,利用公钥加密的数据能且只能通过私钥解密,通过私钥加密的数据能且只能通过公钥解密。
因此实际的网络传输中,通常使用对称加密与非对称加密结合的方式,服务端通过非对称加密将对称秘钥发给客户端。此后双方使用这个对称密钥进行通信。
因此实际的网络传输中,通常使用对称加密与非对称加密结合的方式,服务端通过非对称加密将对称秘钥发给客户端。此后双方使用这个对称密钥进行通信。

几种对称性加密算法:AES,DES,3DES

几种非对称性加密算法:RSA,DSA,ECC

几种线性散列算法(签名算法):MD5,SHA1,HMAC

MD5加密后的密文都是32位字符:无论原先没有加密前的字符串有多长 加密后都是32位字符 另外我们认为MD5是不可逆的,但事实上网站 md5.com 记录了全球的状态码
可以直接将密文进行解析:所以要对MD5进行加盐来解决

方式1、直接进行MD5加密
方式2、加盐后进行MD5加密
方式3、HMAC+MD5

在iOS开发中,如果某个字符串需要进行MD5加密.

  1. 包含头文件“CommonDigest.h”

    #import<CommonCrypto/CommonDigest.h>
    
  2. 编写下述方法。函数参数为需要加密的字符串,返回值为加密后得到的结果,也是一个字符串。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    - (NSString *)md5HexDigest:(NSString *)url  
    {
    const char *original_str = [url UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(original_str, strlen(original_str), result);
    NSMutableString *hash = [NSMutableString string];
    for (int i = 0; i < 16; i++)
    [hash appendFormat:@"%02X", result[i]];
    return [hash lowercaseString];
    }

面试题目:
1)如果原文为字串s, 则在发送前先将s转换为UTF-8编码,然后按位取反,再将数据以字节为单位反转顺序,得到新的字节数组。
2)取出新字节数组的每一字节,为其生成一个0到100的随机数,用该字节减于随机数,得到的结果作为一个32位整数的最后8位,而随机数按位取反后则作为该整数的9至16位,从而生成一个新的整数,以此类推,得到一个整形数组d。
3) 将该整形数组发送给接收方,对方解密后得到原文内容s

文章目录
  1. 1. 几种对称性加密算法:AES,DES,3DES
  2. 2. 几种非对称性加密算法:RSA,DSA,ECC
  3. 3. 几种线性散列算法(签名算法):MD5,SHA1,HMAC
本站总访问量 本站访客数人次 ,