rsa

需求场景

客户端(ios)为了比较安全的通过发起http请求的方式从服务端(java)获取一个重要的数据(这里以字符串举例)采用rsa加解密的方式

实现思路
  • 客户端生成公钥和私钥
  • 公钥转换成通用格式后通过接口传给服务端
  • 服务端使用公钥加密字符串 响应给客户端这个加密后的数据
  • 客户端使用私钥解密字符串
步骤详解(ios端)
  • 生成公钥和私钥
  1. mac 桌面新建文件夹 我这里命名为“rsa公私钥”,用来保存生成的公钥和私钥文件,然后打开终端进入你新建的文件夹,打开openssl


    65WYJMFh图片.png
  2. 生成私钥
genrsa -out rsa_private_key.pem 1024
685NWwVc图片.png
  1. 将私钥转成PKCS8的格式
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
6BvfFZIs图片.png

在这时 拷贝下来我们的私钥, 这个私钥将用于解密,需要注意的是具体使用时需要去掉开头和结尾, 并且去掉其中的换行符。这个后面再说。

-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMpX40MJpXm0FcBx
ovj3cfamqK7/aDGiYV+tSF6eITyu+5ACyba5LY1tch/o2A+cDZuJws/r8bRwebGN
VaQ/A/BQ/jcO55VKezCYQGtvuzcmnJhgdNBJrJxFb3vWfIqWtKFW5cKaPH0bYc72
YddTkojGKZ212acj3f66KNXMactRAgMBAAECgYEAjryW5Zhtcb/2xC2lcIlljEAe
qGwlfTX2CL89WPmlqqApd3pv/wT8PFMjeZ0QpVpJQxpYIcJoXAgn4Hc6HcYSKPe7
Y5McuYjVYKVe0TO6rByBUC0bk4G/7iL3wvK5Vqa+jd5b+XB8GthNJTNQPLHh3G1W
p6iuNVT2JDkpkcD85C0CQQDzIEkKnsLHqzmrWokZ2WJ8K68GV9wt18d4JyifYKae
VfJMCe7E+86kXb54YVVRR8Eqp6gYcXM2LBDoD/B/yHLzAkEA1Q7EnFnlZssmXw3+
c5A4pIqXG6nfJ0IXLIEfa9LRF7uMW0eFJ6sgFEiuZPnbfL+0uUmSbrX28a3p0MIi
0omxqwJAJGhTR8nadTgI3MYj/cD15I5OGW8Sw7KqZi3HAYbhrJhGPmjGXq0ulqKL
IU/CDPfnz1Fn9LEYhaY3qeipJRmJTQJAYUPnsDU+DCqMLvL1ig56PWvjxkZL0OFU
MQYVsSTCPiJp1jYVbOGruHbh3slOUWo3eCtFRXOe9ABgcORf/1vLFwJAXhMOgKq2
Ak84UilMkLin+35nU/oN/qsebdcjyEf0XxvNPap8xF/Cy0DAh8Ju+mjDgwbGDtJC
7uzTt27ZvFBzXA==
-----END PRIVATE KEY-----
  1. 生成公钥
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

做完这一步 看一下我们的文件夹 多了两个文件


6Gzzm4L8图片.png

至此 第一步完成了。

  • 公钥转换成通用格式后通过接口传给服务端

1.获取公钥
接着刚才的命令窗口 键入control + c,使用vim 打开刚刚生成的rsa_public_key.pem文件


6MP4BhJk图片.png

6OyRbGLW图片.png

保存后 命令行键入 :wq ,然后回车

  1. 转换成xml rsa key的通用格式 给java后端使用
    打开转换工具地址:https://superdry.apphb.com/tools/online-rsa-key-converter
    拷贝进去我们上一步保存的公钥 转换得到的xml rsa key公钥如下
    6Za3EvHn图片.png

    我们得到通用格式的公钥,这将是你传给后台的公钥。
<RSAKeyValue><Modulus>ylfjQwmlebQVwHGi+Pdx9qaorv9oMaJhX61IXp4hPK77kALJtrktjW1yH+jYD5wNm4nCz+vxtHB5sY1VpD8D8FD+Nw7nlUp7MJhAa2+7NyacmGB00EmsnEVve9Z8ipa0oVblwpo8fRthzvZh11OSiMYpnbXZpyPd/roo1cxpy1E=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
  • 服务端使用公钥加密字符串 响应给客户端这个加密后的数据

我从服务端得到的加密后的数据如下

ZxeRgfIqacvfMUqeMeIKi2VEJk9J8VVvXz1/fiBWa+YqViBaOQdMV9eDLyZ9Z1EUEg+zDW1XHG0iNcz6A5APrykWFDJME2OpHFZxPVsnelHbKxyRwNk4klW0/XQSf/PMRAX7xJ+NsNfZycVwHZcHizsgdO4jKsz1apaIG21Iims=
  • 客户端使用私钥解密字符串
    移步github下载封装好的工具:https://github.com/ideawu/Objective-C-RSA
    导入RSA.h 和RSA.m文件
    下面使用我们第一步的私钥进行解密 注意:去掉开头结尾 以及中间的换行符,上代码
// 服务端返还的加密的数据
NSString *value_scrpt = @"ZxeRgfIqacvfMUqeMeIKi2VEJk9J8VVvXz1/fiBWa+YqViBaOQdMV9eDLyZ9Z1EUEg+zDW1XHG0iNcz6A5APrykWFDJME2OpHFZxPVsnelHbKxyRwNk4klW0/XQSf/PMRAX7xJ+NsNfZycVwHZcHizsgdO4jKsz1apaIG21Iims=";

// 私钥掐头去尾 去换行符
NSString *private_key = @"MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAL2S8LGI1ZbnUIs56zFJZPjq/LV3+wREKQaV+LUKHCv8EH+ihiU93xohT8qaiB5bL4lUQFWN3aNjq8+dwytLWIjkUOJcSlcZiUDUf/DJ3RvIJ4nndQg6t8vD72JNNullalYxCTaWFm82nxctxt9RXBOdgqsm7TV8oMcI1u2xTuLdAgMBAAECgYEAlmnjPgnC5sPMHVusJ+QDEJlqPxXefekS4B3YQtStu5x4/rxWUXBA93uc0rU/8U4Kbp0BmqBATiaEKOwU8eILcNyVtr3YmxdjC9xvnck/ynYLfWZ6vIAFZBSQXG5dLrQHTI6+2+Ii0udggGt5/daGTimzG5voEk6nq7LmpT1mwyUCQQDeJMsTkxRGTUFUFDB2lgVX+mJWLH3KH7rwfZjD0RSvLp/ijix5ikzkphDDAKpee/Y/X88JueBbjPtDip/dvRSbAkEA2ndmK5GofRkOnQgy35cUrS8/6Gcz0Blh1kNmsg9mPWEUv18vnwXR5O/xXFyyYPY3ZD6XLMEfrf+QnvMlCakR5wJARbeWZFZMjqPAVPrhGtaKZsoWAqWD9ONwb/l68Dm2HCSt2RR1sM9OwpO7vvd+gJi297zB5XOIjjL4yIHBGn408QJBAJK62OtwZDrJRpBfvlOAFIoRDxpXnmwpcBXJpUL4ptGYz6eNFd33ubbLFU/UjpYjKKbyhvSvLUjfOlIXuouXe4cCQQDJJKZ4QJV5WPRFLxHi4iX0D+UwAJQSVBjo0+FVxvJPuDjBmeoSytxtB9hbf+J/1dT35fBRiU5gRBfQlnEGzfOB";
// 解密
NSString *value = [RSA decryptString:value_scrpt privateKey:private_key];

打印解密结果

(lldb) po value
H379MfdLWBrZTG41Bt9XPJSuLu8t45UL22QPnSH/NcY=

解密成功!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容