如何在Objective-C中使用OpenPGP.js加密/解密PGP消息
How to encrypt/decrypt a PGP message in Objective-C using OpenPGP.js
我想使用加密密钥加密消息。我想用OpenPGP.js来完成这个。
我在回答自己的问题。我在一段时间前发现了这个问题,并想分享,因为我找不到类似的东西。
加密应该是这样的:
+ (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库,在这个例子中它被命名为' OpenPGP .js'。此外,本例中的键是铠装的,因此请记住这一点。
我觉得,虽然浪费创建一个WebView只是一个加密轮,它是更安全的,因为它会掉出范围,只要结果与它的上下文返回。请记住,我不是保安人员,所以请将信将疑。
然而,如果你只是想加密没有javascript桥,你可能想给一个尝试的ObjectivePGP库。
相关文章:
- 如何在Node.JS中加载加密私钥
- js:如何隐藏/加密图像的src
- 使用PKCS7Padding在python和Node.js之间进行AES加密
- Node.js和Mongodb安全+源代码加密选项
- 节点.js加密输入/输出类型
- 为什么这个js代码的RSA加密结果与java的RSA标准代码不同
- 使用Bouncy Castle和Node.js加密时会产生不同的结果
- RSA在JS和Python之间加密和解密(pycrypto)
- Node.js对外部PHP aes-256-cbc进行解密,然后对其进行加密
- 将C#Cryptography.Rijndael加密转换为Javascript(pref.crypto-js)
- Cocos2D-JS可以加密源代码吗?
- 在 PHP 中加密字符串,在 Node.js 中解密
- Websockets聊天消息加密与AES,Crypto.js和.NET
- 椭圆曲线加密与JS中的SJCL和Ruby中的OpenSSL
- 将 Java AES 加密代码移植到 node.js
- 节点加密与加密-js 加密和解密之间的兼容性
- 使用crypto-js加密密码并通过ajax发送表单(并在java中解密),我得到:类型错误:无法读取未定义的属性“单词
- 加密-js - 读取和解密文件
- 加密 JS 在解密加密消息时引发的异常
- 加密JS SHA3在相同的输入上给出不同的输出