RSA 在很多地方都要使用,但是在ios下使用RSA就是很麻烦
转载自我的一个好友Acquriaus 的原创
(为什么在iOS下使用什么东西都会麻烦啊摔!)
好吧,麻烦归麻烦,还是要用的。
首先下载库:RSA for ios
这个东西其实是使用openssl的RSA解密加密库的。
科普一下 openssl :OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
将你下载的东西放到项目里面,不要告诉我不会啊!这个不管!
然后修改:
这样然后你编译一下试试。如果是64位的,那么可能会编译不过哦。需要下面的操作
ok!如果编译过了!那么!还不能用!
众所周知!RSA小朋友是需要公钥和私钥的。这个需要普及的同学请查看百度百科。
你可以在下面这个地方发现你的公钥私钥的位置:
看到那两个pem文件木有?用文本编辑打开就可以看到内容。一般后台那边生成公钥私钥比较好做,你可以直接让他们帮你随机生成一份。
好了,当你把后台给你的公钥,你自己的私钥放进项目以后,你就可以开始使用了!
首先你需要先import如下的文件:
NSString+Base64.h
NSData+Base64.h
RSA.h
然后声明如下方法然后使用就可以加密解密啦!
[objc] view plaincopy
- #pragma mark - Encrypt & Decrypt
- - (NSString *)decryptFromCipherText:(NSString *)cipher
- {
- NSString *privateKeyPath = [[NSBundle mainBundle] pathForResource:@"private_key" ofType:@"pem"];
- NSLog(@"privateKeyPath: %@", privateKeyPath);
- charchar *plainText = js_private_decrypt([cipher UTF8String], [privateKeyPath UTF8String]);
- printf("Plain plain: %s\n", plainText);
- return [NSString stringWithUTF8String:plainText];
- }
- - (NSString *)encryptFromPlainText:(NSString *)plain
- {
- NSString *publicKeyPath = [[NSBundle mainBundle] pathForResource:@"public_key" ofType:@"pem"];
- NSLog(@"publicKeyPath: %@", publicKeyPath);
- charchar *cipherText = js_public_encrypt([plain UTF8String], [publicKeyPath UTF8String]);
- printf("cipher : %s\n", cipherText);
- return [NSString stringWithUTF8String:cipherText];
- }