最近在公司项目中被要求使用RSA加密,且要求是全程加解密,期间也是踩了很多的坑,在此做个记录也算给要使用的朋友一点帮助.注意,具体的RSA加密算法内容并不在此文的讨论范围。
1.需要获取公钥:从后端获取模和指数
exponent:010001
modulus:00a6b7f2c93f1f377285407027896757f2f679f15502583b15f59462f1ca358f49412bf2ae7dd712aecc1ccc46960959d8151893ec695f1b4f86af4de1ac04614a46d9415ef9856aca3dc20a40aefbfda06f71e5ee42e904e6512fb8f6cee95a964c16990fe35c1c9f54b4b3d03ea79ae1484883a40f03b19be07d31be01e82a17
2.通过模和指数生成公钥
RSA *publicKey = [DDRSAWrapper openssl_publicKeyFormMod:modulus.length ? modulus : @"" exp:exponent.length ? exponent : @""];
转换成字符串:self.publicKeyString = [DDRSAWrapper base64EncodedStringPublicKey:publicKey];
3.生成公钥后,将待加密的字符串和公钥生成密文
生成字符串:NSString *str = [JSRSA encryptString:self.originalPasswordString publicKey:self.publicKeyString];
转成二进制:NSData *dta = [NSData dataWithBase64EncodedString:str];
4.传输给后端
这个就是普通的网络请求啦
具体RSA代码
https://github.com/danransmile/RSATest