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. 有关collection中的一些数据结构

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

  2. JSON取代XML?--JSON入门指南

    定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C# ...

  3. bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举

    1257: [CQOI2007]余数之和sum Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1779  Solved: 823[Submit][Sta ...

  4. DIV焦点事件

    div本来是没有focus和blur事件的. 如果用div来模拟一个input标签,同时需要它和input一样响应focus和blur事件, 就需要给他加上attribute:tabindex An ...

  5. Android系统的体系结构、开发语言及源码结构

    整理自android系统体系结构 Android 是google公司针对手机开发的一个平台,并公布了其中大部分代码,其大部分应用程序都是用JAVA开发的,毕竟它是商业性的产品嘛,有所保留也是理所 当然 ...

  6. Node.js权威指南 (1) - Node.js介绍

    1.1 Node.js概述 / 2 1.1.1 使用Node.js能够解决什么问题 / 2 1.1.2 实现高性能服务器 / 2 1.1.3 非阻塞型I/O及事件环机制 / 2 1.1.4 Node. ...

  7. (转载)MySQL BETWEEN 用法

    (转载)http://www.5idev.com/p-php_mysql_between.shtml MySQL BETWEEN 语法 BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值 ...

  8. 多台Mac电脑使用一个apple开发者账号

    直接从已安装好的机器上导出私有密钥的,具体方法如下: Xcode的organizer的IPHONE DEVELOPMENT --->Developer Profile里自带的Export和Imp ...

  9. Linux学习笔记7——linux中的静态库和动态库

    一.静态库的编译 静态库的编译过程如下: 1.编译成目标文件 这里有一个可选项-static,调用格式:gcc -c -static 代码文件名.c 2.归档成静态库 A.归档的工具是ar工具,使用a ...

  10. bzoj 2819 Nim(BIT,dfs序,LCA)

    2819: Nim Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1596  Solved: 597[Submit][Status][Discuss] ...