美文网首页
网络之数据安全(3):公钥加密

网络之数据安全(3):公钥加密

作者: 永恒守护__刘鹏辉 | 来源:发表于2016-04-09 17:20 被阅读55次

    公钥加密也叫非对称加密
    常用算法有RSA、ElGamal、背包算法、Rabin等等,iOS中用的最多的是RSA
    iOS使用RSA加密,只需要公钥


    工程截图.png

    ---------------------ViewController.m---------------------

    #import "ViewController.h"
    
    #import "RSA.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
         // 公钥和私钥都是使用证书生成的,并非我们自定义字符串就可以。我们使用的是生成的公钥和私钥
         // 公钥,用于加密数据,用于公开,一般存放在数据提供方,例如iOS客户端
        // 其中-----BEGIN PUBLIC KEY-----和-----END PUBLIC KEY-----不属于密钥部分
        NSString *pubkey = @"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEChqe80lJLTTkJD3X3Lyd7Fj+\nzuOhDZkjuLNPog3YR20e5JcrdqI9IFzNbACY/GQVhbnbvBqYgyql8DfPCGXpn0+X\nNSxELIUw9Vh32QuhGNr3/TBpechrVeVpFPLwyaYNEk1CawgHCeQqf5uaqiaoBDOT\nqeox88Lc1ld7MsfggQIDAQAB\n-----END PUBLIC KEY-----";
        // 加密
        // 第一个参数:要加密的数据
        // 第二个参数:公钥
        // RSA加密之后得到的结果 每一次都不一样,但是都可以通过同一个私钥进行解密
        // 使用加密、解密方法时需要把RSA.h和RSA.m文件拖入工程并引入头文件
        NSString *encPubKey = [RSA encryptString:@"helloWorld" publicKey:pubkey];
        NSLog(@"encPubKey ==== %@", encPubKey);
        
        // 私钥,用于解密数据,必须保密,私钥泄露会造成安全问题
        NSString *provkey = @"-----BEGIN RSA PRIVATE KEY-----\nMIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMQKGp7zSUktNOQk\nPdfcvJ3sWP7O46ENmSO4s0+iDdhHbR7klyt2oj0gXM1sAJj8ZBWFudu8GpiDKqXw\nN88IZemfT5c1LEQshTD1WHfZC6EY2vf9MGl5yGtV5WkU8vDJpg0STUJrCAcJ5Cp/\nm5qqJqgEM5Op6jHzwtzWV3syx+CBAgMBAAECgYEApSzqPzE3d3uqi+tpXB71oY5J\ncfB55PIjLPDrzFX7mlacP6JVKN7dVemVp9OvMTe/UE8LSXRVaFlkLsqXC07FJjhu\nwFXHPdnUf5sanLLdnzt3Mc8vMgUamGJl+er0wdzxM1kPTh0Tmq+DSlu5TlopAHd5\nIqF3DYiORIen3xIwp0ECQQDj6GFaXWzWAu5oUq6j1msTRV3mRZnx8Amxt1ssYM0+\nJLf6QYmpkGFqiQOhHkMgVUwRFqJC8A9EVR1eqabcBXbpAkEA3DQfLVr94vsIWL6+\nVrFcPJW9Xk28CNY6Xnvkin815o2Q0JUHIIIod1eVKCiYDUzZAYAsW0gefJ49sJ4Y\niRJN2QJAKuxeQX2s/NWKfz1rRNIiUnvTBoZ/SvCxcrYcxsvoe9bAi7KCMdxObJkn\nhNXFQLav39wKbV73ESCSqnx7P58L2QJABmhR2+0A5EDvvj1WpokkqPKmfv7+ELfD\nHQq33LvU4q+N3jPn8C85ZDedNHzx57kru1pyb/mKQZANNX10M1DgCQJBAMKn0lEx\nQH2GrkjeWgGVpPZkp0YC+ztNjaUMJmY5g0INUlDgqTWFNftxe8ROvt7JtUvlgtKC\nXdXQrKaEnpebeUQ=\n-----END RSA PRIVATE KEY-----";
        // 解密
        NSString *decPubKey = [RSA decryptString:encPubKey privateKey:provkey];
        NSLog(@"decPubKey ==== %@", decPubKey);
        
        // 根据不同的加密结果解密
        NSString *resultString = @"iZt9FwXTE6ONSk0uEfTSZxO/bu8XdG6smyiKPHRE3PMhC1s1PPJo3KeQLPdNgoJiad8lQSEHo6n79EaPBb/jHwRi3vyPOfmVKfrMADMUwYz5PM6XaT9xP+9xvkIG35UmRdGGp9L5kbdHWyOdC5skipLj4pXlC/Gc9SE2iesmjjM=";
        decPubKey = [RSA decryptString:resultString privateKey:provkey];
        NSLog(@"decPubKey ==== %@", decPubKey);
      
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end
    

    相关文章

      网友评论

          本文标题:网络之数据安全(3):公钥加密

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