美文网首页
iOS之非对称加密算法

iOS之非对称加密算法

作者: 6ffd6634d577 | 来源:发表于2016-04-21 21:23 被阅读1113次

    1、简介
    1.1非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。
    1.2非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey)
    1.3公开密钥和私有密钥是一对
    如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。
    如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。

    2、特点
    算法强度复杂,安全性依赖于算法与密钥。
    加密解密速度慢。

    3、与对称加密算法的对比
    对称加密只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。
    非对称加密有两种密钥,其中一个是公开的。

    4、经典非对称加密算法:RSA算法
    1977年,三位数学家Rivest、Shamir
    和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。

    2、原理
    1、找出两个‘很大’的质数:P & Q,一般长度是上百位。然后通过下面计算得到 N和 M;
    N = P * Q
    M = (P - 1) * (Q - 1)
    2、找出整数E,E与M互质,即除了1之外,没有其他公约数
    3、找出整数D,使用ED除以M余1,即(ED) % M = 1
    4、经过上述准备工作之后,可以得到:
    E是公钥,负责加密
    D是私钥,,负责解密
    N负责公钥和私钥之间的联系
    5、加密算法,假定对X进行加密
    (X^E)%N = Y
    6、解密算法,根据‘费马小定理',可以使用以下公式完成解密
    (Y^D)%N = X

    3、RSA算法演练
    1、RSA原理代码演示
    2、RSA算法演练

    • (void)RSADemo{
      CryptorTools *tools = [[CryptorTools alloc] init];

    // 加载公钥
    NSString *pubPath = [[NSBundle mainBundle] pathForResource:@"rsacert.der" ofType:nil];
    [tools loadPublicKeyWithFilePath:pubPath];

    // 使用公钥加密
    NSString *result = [tools RSAEncryptString:@"i love you"];
    NSLog(@"%@",result);

    // 加载私钥
    NSString *privatePath = [[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil];
    [tools loadPrivateKey:privatePath password:@"123"];

    // 使用私钥解密
    NSLog(@"%@",[tools
    RSADecryptString:result]);
    }

    4、RSA应用场景
    由于 RSA算法的加密解密速度要比对称算法速度慢很多,在实际应用中,通常采取
    数据本身的加密和解密使用对称加密算法(AES)。
    用RSA算法加密并传输对称算法所需的密钥。

    相关文章

      网友评论

          本文标题:iOS之非对称加密算法

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