我想用一个装甲密钥来加密一条消息。我想使用OpenPGP.js来实现这一点。
发布于 2014-07-28 23:47:25
我在回答我自己的问题。我很久以前就发现了这一点,并想分享一下,因为我找不到类似的东西。
以下是加密应该是什么样子:
+ (NSString *)encryptMessage:(NSString *)message
forKey:(NSString *)key {
NSString *result = nil;
UIWebView *webView = [[UIWebView alloc] init];
NSString *path = [[NSBundle mainBundle] pathForResource:@"openpgp" ofType:@"js"];
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSString *resultOfPGPLibEval = [webView stringByEvaluatingJavaScriptFromString:content];
if ([resultOfPGPLibEval isEqualToString:@"true"]) {//library was loaded successfully
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // Undocumented access
context[@"key"] = key;
context[@"message"] = message;
[context evaluateScript:@"var openpgp = window.openpgp; var publicKey = openpgp.key.readArmored(key);var pgpMessage = openpgp.encryptMessage(publicKey.keys, message);"];
JSValue *val2 = context[@"pgpMessage"];
result = val2.toString;
}
return result;}
请注意,捆绑包中必须有Openpgp.js库,在本例中将其命名为‘OpenPGP pgp.js’。同样在这个例子中的关键是装甲,所以记住这一点。
我觉得只为一个加密轮创建一个WebView是浪费的,但它更安全,因为一旦结果与它的上下文一起返回,它就会落入范围之外。请记住,我不是一个保安人员,所以对此持保留态度。
我希望这对某些人有帮助。
发布于 2014-08-01 17:20:54
然而,如果你只想在没有javascript桥的情况下加密,你可能想尝试一下ObjectivePGP库。
https://stackoverflow.com/questions/24999011
复制相似问题