美文网首页
04非对称加密

04非对称加密

作者: 严兵胜 | 来源:发表于2017-07-01 14:58 被阅读0次

    非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
    ● 公开密钥与私有密钥是一对,
    如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;
    如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
    ● 特点:
    ■ 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快
    ■ 对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了

    • RSA算法原理

    找出两个“很大”的质数:P & Q

    (2) N = P * Q (3) M = (P – 1) * (Q – 1) (4) 找出整数E,E与M互质,即除了1之外,没有其他公约数 (5) 找出整数D,使得E*D除以M余1,即 (E * D) % M = 1 ● 经过上述准备工作之后,可以得到: ■ E是公钥,负责加密 ■ D是私钥,负责解密 ■ N负责公钥和私钥之间的联系 ■ 加密算法,假定对X进行加密 ➢ (X ^ E) % N = Y ■ 根据费尔马小定义,根据以下公式可以完成解密操作 ➢ (Y ^ D) % N = X

    • RSA算法的实际应用

    由于RSA算法的加密解密速度要比对称算法的速度慢很多,在实际应用中,通常采取:
    ● (1) 数据本身的加密解密使用对称加密算法(AES/DES3)
    (2) 用RSA算法加密并传输对称算法所需的秘钥
    (3) ● 除此之外,RSA算法还在身份认证(或称鉴权)以及数字签名方面得到广泛的使用

    Snip20170701_56.png
     //1.加载公钥
        [[RSACryptor sharedRSACryptor] loadPublicKey:[[NSBundle mainBundle] pathForResource:@"rsacert.der" ofType:nil]];
        
        //2.加载私钥
        [[RSACryptor sharedRSACryptor] loadPrivateKey:[[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil] password:@"123456"];
        
        
        //加密
        NSData *data = [[RSACryptor sharedRSACryptor] encryptData:[pwdStr dataUsingEncoding:NSUTF8StringEncoding]];
        
        //base64
        NSLog(@"%@",[data base64EncodedStringWithOptions:0]);
        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
        
        //    [data writeToFile:@"/Users/xiaomage/Desktop/aaaa" atomically:YES];
        
        //解密
        NSData *dataM = [[RSACryptor sharedRSACryptor] decryptData:data];
        
        NSLog(@"非对称加密__解密 = %@",[[NSString alloc]initWithData:dataM encoding:NSUTF8StringEncoding]);
    
    

    效果

    Snip20170701_57.png

    相关文章

      网友评论

          本文标题:04非对称加密

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