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. windows通过Composer安装yii2

    1. php.ini 中;extension=php_openssl.dll(取消注释,不然在安装composer过程中会报错) 集成环境最好去php目录中打开php.ini文件,确定;extensi ...

  2. django中文件(头像)上传

    一些常用的小功能,记录下来 先说一种上传功能. 模板表单 <form enctype="multipart/form-data" name="form1" ...

  3. keil对51单片机变量和函数的编译处理

    (1)初始值不是0的全局变量 在程序调到main()函数执行前,除了要进行内存清零.初始化堆栈外,还需要将全局变量的初始值加载到RAM的指定区域(编译过程中为全局变量分配的空间). (2)未初始化的局 ...

  4. Visual Studio C/C++ 编译器选项

    优化- /O1 最小化空间                          /O2 最大化速度/Ob<n> 内联扩展(默认 n=0)               /Od 禁用优化(默认) ...

  5. Java基础——异常机制

    [捕获异常] 硬件的错误.输入错误.物理限制等问题,都可能导致程序运行时的异常出现. 1.异常的分类层次 在java中,异常对象都是由Throwable类继承而来的,主要分为两大类: Error和Ex ...

  6. ZeroBraneStudio之支持远程调试

    打开ZBS后,如果需要远程调试得先开启调试服务器:Project->Start Debugger Server 打开之后就可以编辑文件进行测试了.示例代码如下: local ZBS = 'D:/ ...

  7. Debug和Release之本质区别

    转自Debug和Release之本质区别 Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发 ...

  8. elasticsearch spring 集成

    elasticsearch spring 集成 项目清单   elasticsearch服务下载包括其中插件和分词   http://download.csdn.net/detail/u0142011 ...

  9. 【转】微信Android SDK示例代码及运行方法

    原文网址:http://blog.csdn.net/icyfox_bupt/article/details/23742217 最近在研究微信SDK,无奈网上好使的教程太少,对于程序员来说最好的东西,一 ...

  10. (转载)prepare函数的学习,我要学习php第二天

    (转载)http://www.boyuan78.com/htm/company/2012_1030_60.html prepare函数的学习,我要学习php第二天 $mysqli = new mysq ...