1.首先要下载openssl。这个不用说,直接官网下载或者用brew install openssl下载。

2.终端生成私钥密钥。

2.1生成私钥

openssl genrsa -out rsa_private_key.pem 

2.2生成密钥

openssl rsa -in rsa_private_key.pem
-pubout -out rsa_public_key.pem

2.3将RSA私钥转换为pkcs8 格式

openssl pkcs8 -topk8 -inform
PEM -in rsa_private_key.pem
-outform PEM -nocrypt -out rsa_private_key.pem

私钥及密钥地址在根目录文件 rsa_private_key.pem  rsa_public_key.pem

问价可通过右键文件编辑器打开查看

也可以通过终端命令cat rsa_private_key.pem 及 cat rsa_pubilic_key.pem 查看私钥密钥字符串

3.导入openssl ,导入HBRSAHandler 文件夹。

小技巧:拖进去后:librarySearchpath:会自动设置,然后拷贝路径到headSearchpath,后边添加/include。

4.使用:

两种方式导入密钥然后调用响相应的方法即可。

NSString* private_key_string = @"MIICdQIBA.......";

   NSString* public_key_string = @"MIGfMA0GC.......";  

   NSString *publicKeyFilePath = [[NSBundle mainBundle] pathForResource:@"rsa_public_key.pem" ofType:nil];

   NSString *privateKeyFilePath = [[NSBundle mainBundle] pathForResource:@"rsa_private_key.pem" ofType:nil];

   HBRSAHandler* handler = [HBRSAHandler new];

  //两种方式导入

  // [handler importKeyWithType:KeyTypePublic andPath:publicKeyFilePath];

  //[handler importKeyWithType:KeyTypePrivate andPath:privateKeyFilePath];

  [handler importKeyWithType:KeyTypePrivate andkeyString:private_key_string];

  [handler importKeyWithType:KeyTypePublic andkeyString:public_key_string];

   NSString* sig = [handler signString:@"签名字符串"];

   NSString* sigMd5 = [handler signMD5String:@"签名字符串"];

   NSLog(@"%@%@",sig,sigMd5);

   BOOL isMatch = [handler verifyString:@"签名字符串" withSign:sig];

   BOOL isMatchMd5 = [handler verifyMD5String:@"签名字符串    

   NSLog(@"%d%d",isMatch,isMatchMd5);

   NSString* enString = [handler encryptWithPublicKey:@"加密字符串"];

   NSString* deString = [handler decryptWithPrivatecKey:enString];

   NSLog(@"%@",deString);

5.结果验证(注:公钥加密,每次加密的结果会不一样,但是私钥签名的结果每次都一样)

iOS RSA 加密解密及签名验证的更多相关文章

  1. iOS RSA加密解密及签名验证

    1.首先要下载openssl,这个不用说,直接官网下载或者用brew install openssl下载 2.终端生成私钥密钥 2.1生成私钥 openssl genrsa - 2.2生成密钥 ope ...

  2. Cryptopp iOS 使用 RSA加密解密和签名验证签名

    Cryptopp 是一个c++写的功能完善的密码学工具,类似于openssl 官网:https://www.cryptopp.com 以下主要演示Cryptopp 在iOS上的RSA加密解密签名与验证 ...

  3. RSA加密解密与签名验证

    关于RSACryption帮助类定义见RSACryption 一.加密与解密 //定义明文和密文变量 string plaintext = "天道酬勤,厚德载物!"; string ...

  4. openssl 非对称加密 RSA 加密解密以及签名验证签名

    1. 简介 openssl  rsa.h 提供了密码学中公钥加密体系的一些接口, 本文主要讨论利用rsa.h接口开发以下功能 公钥私钥的生成 公钥加密,私钥解密 私钥加密,公钥解密 签名:私钥签名 验 ...

  5. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  6. iOS常用加密之RSA加密解密

    前言: iOS常用的加密有很多种,前两天在工作中遇到了RSA加密,现在把代吗分享出来. RSA基本原理 RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(p ...

  7. RSA加密解密及数字签名Java实现--转

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...

  8. RSA加密解密和读取公钥、私钥

    /// <summary>     /// RSA加密解密及RSA签名和验证    /// </summary>     public class RSADE    {    ...

  9. C#的RSA加密解密签名,就为了支持PEM PKCS#8格式密钥对的导入导出

    差点造了一整个轮子 .Net Framework 4.5 里面的RSA功能,并未提供简单对PEM密钥格式的支持(.Net Core有咩?),差点(还远着)造了一整个轮子,就为了支持PEM PKCS#8 ...

随机推荐

  1. 了解SOA是什么!

    面向服务架构 面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来 ...

  2. Linux网络编程-----Socket地址API

    (1) 通用socket地址 socket网络编程接口中表示socket地址的是结构体sockaddr,其定义如下: #include<bits/socket.h> struct sock ...

  3. 面试cookie

    cookie : 存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来像访问者电脑上存储数据 1.不同的浏览器存放的cookie位置不一样,也是不能通用的 2.cookie的存储 ...

  4. 常用machine learning数据集

    ImageNet:非商业化的可视化大数据 截止到2015年5月1日,ImageNet数据库拥有超过1500万的图像. cifar10:10类物体识别数据集 数据集中包含60,000幅32*32图像,共 ...

  5. nodejs服务

    http://www.csser.com/board/4f55035305ee2e572400005e http://blog.fens.me/nodejs-server-forever/ http: ...

  6. 使用javascript获取网址的各个参数

    有时也挺无奈的,为了实现一个功能,不得不用到前台获取参数.幸亏,有javascript,不然真的是坑大发了,感谢javascript的创造者.开始show大图: 属性    值href:完整的 URL ...

  7. MFC 仿QQ聊天软件(黄花寒)

    http://blog.csdn.net/lh844386434/article/details/6655080 http://download.csdn.net/download/lh8443864 ...

  8. Java实现字符串反转

    替换原则:index k 的值和 n-k 的值进行交换.(始终记住程序员的n.k都是字符串的实际位置.) 乘除的最基本实现还是来源于移位操作. public String reverse(String ...

  9. Oracle 搜集统计信息

    常用的统计信息收集脚本: 非分区表: BEGIN   DBMS_STATS.GATHER_TABLE_STATS(ownname          => 'SCOTT',             ...

  10. 译文:TransactionScope 与 Async/Await

    你可能不知道这一点,在 .NET Framework 4.5.0  版本中包含有一个关于 System.Transactions.TransactionScope 在与 async/await 一起工 ...