![](/img/trans.png)
[英]iOS swift3 equivalent of “RSA/NONE/OAEPWithSHA256AndMGF1Padding”
[英]“RSA/NONE/OAEPWithSHA1AndMGF1Padding” in iOS
在我的应用程序中,我想将公共密钥加密的密码发送到服务器。 在android中,我们使用了“ RSA / NONE / OAEPWithSHA1AndMGF1Padding”。 在iOS中可以使用哪种填充来达到相同的效果? 我尝试使用kSecPaddingPKCS1,kSecPaddingOAEP和kSecPaddingPKCS1SHA1,但服务器无法解密数据。
- (NSString *)encryptRSA:(NSString *)plainTextString key:(SecKeyRef)publicKey
{
size_t cipherBufferSize = SecKeyGetBlockSize(publicKey);
uint8_t *cipherBuffer = malloc(cipherBufferSize);
uint8_t *nonce = (uint8_t *)[plainTextString UTF8String];
SecKeyEncrypt(publicKey,
kSecPaddingOAEP,
nonce,
strlen( (char*)nonce ),
&cipherBuffer[0],
&cipherBufferSize);
NSData *encryptedData = [NSData dataWithBytes:cipherBuffer length:cipherBufferSize];
return [encryptedData base64EncodedStringWithOptions:0];
}
-(NSString *)decryptRSA:(NSString *)cipherString key:(SecKeyRef)privateKey {
size_t plainBufferSize = SecKeyGetBlockSize(privateKey);
uint8_t *plainBuffer = malloc(plainBufferSize);
NSData *incomingData = [[NSData alloc] initWithBase64EncodedString:cipherString options:0];
uint8_t *cipherBuffer = (uint8_t*)[incomingData bytes];
size_t cipherBufferSize = SecKeyGetBlockSize(privateKey);
SecKeyDecrypt(privateKey,
kSecPaddingOAEP,
cipherBuffer,
cipherBufferSize,
plainBuffer,
&plainBufferSize);
NSData *decryptedData = [NSData dataWithBytes:plainBuffer length:plainBufferSize];
NSString *decryptedString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding]; return decryptedString;
}
来源: https : //launchkey.com/docs/api/encryption/objective-c/commoncrypto
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.