UNNetPGP 是 NetPGP 的 Objective-C 包装器,适用于 iOS。
关于
您寻找的 PGP 解决方案就在这里。操作级别的 C API,加上围绕它的 Objective-C 包装器,即可加密和解密 PGP 消息。基于 NetPGP,这是一个符合标准的库和一系列实用工具,提供数字签名和验证功能,以及使用 RSA 和 DSA/Elgamal 密钥进行数据加密和解密。
安装
此软件包旨在与 Cocoapods 一起使用,以满足 OpenSSL 依赖项。
将以下内容添加到您的 Podfile
pod 'UNNetPGP', :podspec => 'https://raw.github.com/upnext/unnetpgp/master/UNNetPGP.podspec'
像 Source Trees 这样的东西应该可以解决问题,但我们尚未测试。欢迎提交拉取请求。
使用方法
初始化和设置
UNNetPGP *pgp = [[UNNetPGP alloc] initWithUserId:@"[email protected]"];
pgp.password = @"secret1234";
pgp.armored = YES
可选地,您可以指定家庭目录之外的 ringfiles
pgp.publicKeyRingPath = [[self documentsDirectory] stringByAppendingPathComponent:@"pubring.gpg"];
pgp.secretKeyRingPath = [[self documentsDirectory] stringByAppendingPathComponent:@"secring.gpg"];
让我们定义文件名。注意:对于某些文件,文件扩展名很重要!(《gpg》,《asc》)
NSString *plaintextFile = [myDir stringByAppendingPathComponent:@"plain.txt"];
NSString *encryptedFile = [myDir stringByAppendingPathComponent:@"plain.txt.gpg"];
NSString *decryptedFile = [myDir stringByAppendingPathComponent:@"plain.decoded.txt"];
NSString *signatureFile = [myDir stringByAppendingPathComponent:@"plain.txt.asc"];
加密文件
BOOL result = [pgp encryptFileAtPath:plainFilePath toFileAtPath:encryptedFilePath options:UNEncryptOptionNone];
NSLog(@"encryptedFilePath = %@",@(result));
解密文件
BOOL result = [pgp decryptFileAtPath:encryptedFilePath toFileAtPath:decryptedFilePath];
NSLog(@"decryptFileAtPath = %@",@(result));
生成新密钥(并保存在密钥环中)
BOOL success = [pgp generateKey:1024];
创建文件签名
BOOL success = [pgp signFileAtPath:plaintextFile writeToFile:signatureFile detached:YES];
验证文件签名。注意:假设签名文件存在于相同的目录中。
BOOL success = [pgp verifyFileAtPath:signatureFile];
作者