iOS之那几种加密解密 公钥密钥加密解密

//
//  ViewController.m
//  公钥密钥加密解密
//
//  Created by dllo on 16/1/12.
//  Copyright © 2016年 HaiTeng. All rights reserved.
//

#import "ViewController.h"
#import "RSA.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor yellowColor];

    /*

     //公钥秘钥加密解密:
     //非对称加密解密(公钥,加密后,只有密钥能解),通过公钥进行加密,秘钥进行解密.
     //通常,公钥放在客户端, 秘钥存放在数据库. **密钥必须要保密**,不能泄露.
     //通常用于支付,如:微信,QQ,支付宝,银联..都使用非对称加密,解密方式.

     */

    //公钥字符串
    NSString *publicKey = @"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEChqe80lJLTTkJD3X3Lyd7Fj+\nzuOhDZkjuLNPog3YR20e5JcrdqI9IFzNbACY/GQVhbnbvBqYgyql8DfPCGXpn0+X\nNSxELIUw9Vh32QuhGNr3/TBpechrVeVpFPLwyaYNEk1CawgHCeQqf5uaqiaoBDOT\nqeox88Lc1ld7MsfggQIDAQAB\n-----END PUBLIC KEY-----";
    //公钥加密
    NSString *string = @"海腾"; /*要加密的东西*/
    //加密
    NSString *encryStr = [RSA encryptString:string publicKey:publicKey];
    NSLog(@"%@",encryStr); /*打印看看,加密后的字符串*/

    //私钥解密
    //私钥字符串
    NSString *privateKey = @"-----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 *decryStr = [RSA decryptString:encryStr privateKey:privateKey];
    NSLog(@"%@",decryStr); /* 打印看看 */

    //字典. 进行加密解密
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"James",@"name", nil];
    //转化为NSData(NSData万能转化)
    NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
    //公钥加密
    NSData *encryData = [RSA encryptData:data publicKey:publicKey];
    NSLog(@"%@",encryData);  /*看下加密后的Data也就是字典*/

    //服务器
    //私钥解密
    NSData *dencryData = [RSA decryptData:encryData privateKey:privateKey];
    //Data -> 字典
    NSDictionary *dic1 = [NSJSONSerialization JSONObjectWithData:dencryData options:0 error:nil];
    NSLog(@"%@",dic1); /*打印看看解密后的字典*/

    //练习,解密,服务器加密返回的字符串,所有这里用公钥进行解密
  //  服务器用私钥已经加过密的签名
    NSString *encryptStr = @"F+feHOH6807tUV/drvepAMzKlVKRsoDFRkFNfhS9kgVoBt2E6OnUIVw12l608yQGWiqtq8rgZgMY/VCQYZB+3r2rhDlyZ2fjo00sUFOp5BkNPFTs/NpQAolD6V3ifNgDmBQP92uVbxbod1pLRwLC0wLOhr5flQXvvobeg5KrDeE=";
    NSString *a = [RSA decryptString:encryptStr publicKey:publicKey];
    NSLog(@"------ %@",a);

}
时间: 2024-10-15 22:53:45

iOS之那几种加密解密 公钥密钥加密解密的相关文章

php/js/linux: js加密(rsa公钥加密) php解密(rsa私钥解密)

一: js rsa 插件 https://github.com/UFO0001/WX_RSA 或者: https://files.cnblogs.com/files/achengmu/WX_RSA-master.zip 二: 代码所在的服务器生成:private_key/public_key 两个文件 php代码如下: <?php /** * Created by PhpStorm. * User: Administrator * Date: 2017/11/10 * Time: 15:29 *

【安全加密技术】--对称加密

转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46822663 上篇了解了<非对称加密>后 今天我来继续了解下加密技术中对称加密. 对称加密 对称加密是最传统的加密方式,比上非对称加密,缺少安全性,但是它依旧是用的比较多的加密方法. 对称加密采用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即"一把钥匙开一把锁".对称加密的好处在于操作简单.管理方便.速度快.它的缺点在于密钥在 网络传输中容易被窃听,

HTTPS中的对称密钥加密,公开密钥加密,数字证书

HTTPS中的对称密钥加密,公开密钥加密,数字证书 密钥 我们将未加密的内容称为明文,加密之后的内容称为密文. 简单来说,要加密一段明文,可以将这段内容输入到一个加密函数中,输出密文.但这种简单的加密方式存在被人盗取到加密函数从而破解明文的危险,且加密函数一般构成复杂,一旦被盗取更换成本较高. 于是人们想出了一个办法,在加密函数中再添加一个参数,这个参数只有通信双方知道,没有参数则无法正确解密出密码.这个参数被称为密钥.对于同一个加密函数而言,密钥值的不同则加密方式也不同,得出的密文也就不同.这

【安全加密技术】非对称加密

转载请注明出处:http://blog.csdn.net/sk719887916/article/details/46810595 看过上篇网络互联基系列基础的朋友,对安全产生的原因以及策略度有所了解,当然作为开发者来讲,网络传输中的安全问题我们不必过多的关心,我们关心的是发送方加密和接收方对数据的解密过程,也就是网络安全中的一面边缘学科,密码学中的一种数据加密技术,目前业界的加密方式主要有对称加密和非堆成加密,那就先来了解下有非对称加密以及所关联的相关名字. 非对称加密 非对称加密算法是一种密

公钥私钥加密解密数字证书数字签名详解

from http://codefine.co/1455.html 首先明确几个基本概念: 1.密钥对,在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的. 2.公钥,公钥用来给数据加密,用公钥加密的数据只能使用私钥解密. 3.私钥,如上,用来解密公钥加密的数据. 4.摘要,对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得. 5.签名,使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名.

iOS之那几种加密 MD5加密.

前言: 好好活着,因为我们会死很久.---海腾 iOS之那几种加密 MD5加密.  接下来我们看代码 NSString+MD5.h   // // NSString+MD5.h // UI21_MD5加密 // // Created by JR_Rafael on 16/1/11. // Copyright © 2016年 lanou3g. All rights reserved. // #import <Foundation/Foundation.h> @interface NSString

RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一.RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价. .NET提供常用的加密算法类,支持RSA的类是RSACryptoServiceProvider(命名空间:System.Security.Cryptography),但只支持公钥加密,私钥解密.RSACr

rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?

本文转自:91博客:原文地址:http://www.9191boke.com/138589019.html 公钥和私钥在一些银行系统.第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区分两者的区别. RSA公钥和私钥是什么? 首先来说,RSA是一种非对称加密算法,它是由三位数学家(Rivest.Shamir.Adleman)设计出来的.非对称加密是相对于对称加密而言的.对称加密算法是指加密解密使用的是同一个秘钥,而非对称加密是由两个密钥(公钥.私钥)来进行加密解密的,由此可见非对

C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 -变态模式【支持私钥加密,公钥解密】(二)

RSA变态模式:[私钥加密,公钥解密] 一般这种写法都是JAVA弄的..NET原生不支持.为啥,我也不清楚,大概是因为安全性问题吧,毕竟公钥是人人都可是持有的.私钥只有自己拥有. 对接注意事项:https://www.cnblogs.com/kevin860/p/9557845.html 一般方法请看:https://www.cnblogs.com/kevin860/p/9557845.html 签名一直都是[私钥加签.公钥验签]只为证明该消息是你发出来的. 这里使用了BouncyCastle1