Skip to content
iOS端使用RSA加密解密
Objective-C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
RSAEncrypt.xcodeproj
RSAEncrypt 修正错误 Jun 8, 2018
.gitignore
LICENSE Initial commit Jul 1, 2017
README.md

README.md

RSA使用NSString格式公钥加密

前言:

RSA加密在iOS中经常用到,麻烦的方法是使用openssl生成所需秘钥文件, 需要用到.der和.p12后缀格式的文件,其中.der格式的文件存放的是公钥(Public key)用于加密,.p12格式的文件存放的是私钥(Private key)用于解密。至于公钥和私钥的关系,有人形象的把公钥比喻为保险箱,把私钥比喻为保险箱的钥匙,保险箱我可以给任何人,也可以有多个保险箱,任何人都可以往保险箱里面放东西(机密数据),但只有我有私钥(保险箱的钥匙),只有我能打开保险箱。

常见使用场景(客户端加密用户密码/交易密码发送给服务器):

客户端向服务器请求RSA公钥----->服务器----->返给客户端一个NSString格式的RSA公钥----->客户端用RSA公钥字符串加密密码发送给服务器----->服务器用RSA私钥解密并核对密码----->核对密码是否正确,并返回客户数据给客户端

RSA加密密码序列图

RSA序列图

RSA加密密码关系图

RSA序列图

注意:

例如:这是一串服务器生成的RSA公钥

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTbZ6cNH9 PgdF60aQKveLz3FTalyzHQwbp601y77SzmGHX3F5NoVUZbd K7UMdoCLK4FBziTewYD9DWvAErXZo9BFuI96bAop8wfl1Vk ZyyHTcznxNJFGSQd/B70/ExMgMBpEwkAAdyUqIjIdVGh1FQ K/4acwS39YXwbS+IlHsPSQIDAQAB

但由于含有/+=\n等特殊字符串,网络传输过程中导致转义,进而导致加密解密不成功,解决办法是进行URL特殊符号编码解码(百分号转义);具体示例,在Demo中有示例,文章最下方有链接

RSA用NSString加密解密示例,非常简单

//----------------------RSA加密示例------------------------
//原始数据,要加密的字符串
NSString *originalString = @"这是一段将要使用'秘钥字符串'进行加密的字符串!";

//使用字符串格式的公钥私钥加密解密, RSAPublickKey为公钥字符串(NSString格式)
NSString *encryptStr = [RSAEncryptor encryptString:originalString publicKey:RSAPublickKey];

NSLog(@"加密前:%@", originalString);
NSLog(@"加密后:%@", encryptStr);
//用私钥解密,RSAPrivateKey为私钥字符串(NSString格式)
NSString *decryptString = [RSAEncryptor decryptString:encryptStr privateKey:RSAPrivateKey];

NSLog(@"解密后:%@",decryptString);

如果您觉得有所帮助,请在GitHub上赏个Star ⭐️,您的鼓励是我前进的动力

You can’t perform that action at this time.