PPRSA 0.1.0

PPRSA 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布最后的发布2017年10月

Yagiz Gurgul 维护。



PPRSA 0.1.0

  • Yagiz

RSA

适用于 iOS 的简单 RSA 加密和解密。
这些类 不需要 OpenSSL 就可以在 iOS 上构建,您只需要 Security.framework
但是,需要 OpenSSL 生成密钥对,通常您希望在自己的桌面机器上完成。
请参见以下内容。

使用

对于加密,您可以将公钥({name}.crt)添加到您的应用程序包中,并加载它。
对于解密,您可以 添加 您的 p12({name}.p12)到您的应用程序包中并加载它。
但是,您可能不希望将您的 .p12 添加到应用程序包中,因为它很容易被提取。
相反,您应该以某种方式将私钥数据加载到您的应用程序中,并从中创建一个 NSData 表示。

NSString *string = @"This is a string to encrypt. No longer than 245 bytes!";
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

NSString *private = <# Base64 String of your private p12 data #>;
NSData *privateKey = [[NSData alloc] initWithBase64EncodedString:private options:0];

PPRSA *rsa = [PPRSA new];
NSError *error = nil;
if ([rsa loadPublicKeyFromBundledCertificate:@"public" error:&error]) {
    if ([rsa loadPrivateKeyFromP12Data:privateKey password:@"t4co9x" error:&error]) {
        NSData *encrypted = [rsa encryptData:data error:&error];
        if (encrypted) {
            NSData *decrypted = [rsa decryptData:encrypted error:&error];
            NSString *final = [[NSString alloc] initWithData:decrypted encoding:NSUTF8StringEncoding];
            NSLog(@"--> %@", final);
        }
    }
}

密钥生成

生成一个新的密钥对(到 public.crtprivate.pem)。
您需要提供一个密码。

openssl req -x509 -days 3652 -out public.crt -outform DER -new -newkey rsa:2048 -keyout private.pem

创建一个签名请求。
您将被要求提供国家、公司等信息;填写适用于您的任何内容。

openssl req -new -key private.pem -out signing-request.csr

创建自签名证书,例如此示例中有效期为 10 年。
您将需要输入私钥的密码。

openssl x509 -req -days 3652 -in signing-request.csr -signkey private.pem -out certificate.crt

将私钥和证书导出到一个 p12 文件(private.p12)中。
您将再次被要求输入私钥密码,并提示您为 p12 创建一个新密码。

openssl pkcs12 -export -out private.p12 -inkey private.pem -in certificate.crt

许可证

这项工作是公共领域的。

代码片段来自各种地方,特别是 StackOverflow 和 Chris Luke 的博客