iOS RSA 加密解密及签名验证
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 加密解密及签名验证的更多相关文章
- iOS RSA加密解密及签名验证
1.首先要下载openssl,这个不用说,直接官网下载或者用brew install openssl下载 2.终端生成私钥密钥 2.1生成私钥 openssl genrsa - 2.2生成密钥 ope ...
- Cryptopp iOS 使用 RSA加密解密和签名验证签名
Cryptopp 是一个c++写的功能完善的密码学工具,类似于openssl 官网:https://www.cryptopp.com 以下主要演示Cryptopp 在iOS上的RSA加密解密签名与验证 ...
- RSA加密解密与签名验证
关于RSACryption帮助类定义见RSACryption 一.加密与解密 //定义明文和密文变量 string plaintext = "天道酬勤,厚德载物!"; string ...
- openssl 非对称加密 RSA 加密解密以及签名验证签名
1. 简介 openssl rsa.h 提供了密码学中公钥加密体系的一些接口, 本文主要讨论利用rsa.h接口开发以下功能 公钥私钥的生成 公钥加密,私钥解密 私钥加密,公钥解密 签名:私钥签名 验 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- iOS常用加密之RSA加密解密
前言: iOS常用的加密有很多种,前两天在工作中遇到了RSA加密,现在把代吗分享出来. RSA基本原理 RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(p ...
- RSA加密解密及数字签名Java实现--转
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...
- RSA加密解密和读取公钥、私钥
/// <summary> /// RSA加密解密及RSA签名和验证 /// </summary> public class RSADE { ...
- C#的RSA加密解密签名,就为了支持PEM PKCS#8格式密钥对的导入导出
差点造了一整个轮子 .Net Framework 4.5 里面的RSA功能,并未提供简单对PEM密钥格式的支持(.Net Core有咩?),差点(还远着)造了一整个轮子,就为了支持PEM PKCS#8 ...
随机推荐
- java相关各种页面跳转
AK相信页面跳转在这个圈圈圆圆里是个地球人都能经常遇到的事,AK也在平时的工作学习中记录了一些,这里就做一个小小的总结,有任何的疑问和质疑都希望您能告诉我,不用担心后果,必定至少您还能理我,AK万分感 ...
- bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie
2741: [FOTILE模拟赛]L Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1116 Solved: 292[Submit][Status] ...
- Google将向IETF标准提交QUIC协议提案
Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...
- Angular1.0
公司会议室组织分享,两个小时困死我了,一点凌乱笔记: $http.get和promise一样有then方法,成功,失败 jquery each遍历对象i,n ng-app ng-controller ...
- The Perfect Stall
poj1274:http://poj.org/problem?id=1274 题意:有n个奶牛和m个谷仓,现在每个奶牛有自己喜欢去的谷仓,并且它们只会去自己喜欢的谷仓吃东西,问最多有多少奶牛能够吃到东 ...
- hibernate的速度问题--hibernate.jdbc.fetch_size和 hibernate.jdbc.batch_size
hibernate的速度问题 这点我也疑惑过,最初应用hibernate的项目,我也感觉速度很慢,知道后来才知道问题的所在. 其实hibernate的速度性能并不差,比起jdbc来说,又是 ...
- C++ Prime:sizeof运算符
sizeof运算符的结果部分地依赖于其作用的类型: 对char或者类型为char的表达式执行sizeof运算结果得1: 对引用类型执行sizeof运算得到被引用对象所占空间的大小: 对指针执行size ...
- Node.js权威指南 (2) - Node.js中的交互式运行环境——REPL
2.1 REPL运行环境概述 / 102.2 在REPL运行环境中操作变量 / 102.3 在REPL运行环境中使用下划线字符 / 122.4 在REPL运行环境中直接运行函数 / 122.5 在RE ...
- 去掉eclipse js 错误提示
1.去掉项目目录底下的.project文件中的以下部分:<buildCommand> <name>org.eclipse.wst.jsdt.core.javascri ...
- 用delphi的THTTPRIO控件调用了c#写的webservice。
用delphi的THTTPRIO控件调用了c#写的webservice. 下面是我调试时遇到的一些问题: 1,导入wsdl文件:file--new----other----wenservice---W ...