繁体   English   中英

iOS中的“ RSA / NONE / OAEPWithSHA1AndMGF1Padding”

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM