- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是加密新手,我正在尝试使用 AES256 通过 websockets 从移动应用程序到网页进行一些对称加密。
我使用 RNCryptor 默认设置加密数据
iOS 代码
NSString* message = @"testmessage";
NSData* pubData = [message dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptedData = [RNEncryptor encryptData:pubData
withSettings:kRNCryptorAES256Settings
password:@"test"
error:&error];
if(error) {
NSLog(@"Error encrypting %@", [error localizedDescription]);
}
NSString* encryptedString = [encryptedData base64Encoding];
NSLog(@"Sending message %@", encryptedString);
[self.session publishData:[encryptedString dataUsingEncoding:NSUTF8StringEncoding] onTopic:@"test12345"];
这是通过 websockets 输出的AgEBnXPPvAkJb7YVapwCVNd5SQw4JwqU7BfLsEXNZyKy9SazfJT8w16Y/hYY7aKxuz3Kuy2tAXXX/cHCc3PMhvG+fzSfrslRVMKvD6L+oWvXLg==
JavaSCRIPT 代码 - 我收到消息并尝试解析它并显示它
function onMessageArrived(message) {
var rawData = base64.decode(message.payloadString);
var encryptionSalt = rawData.substr(2,8);
var hmacSalt = rawData.substr(10,8);
var iv = rawData.substr(18, 16);
var ciphertext = rawData.substr(34, rawData.length-34-32);
var hmac = rawData.substr(rawData.length-32, 32);
var password = "test";
var key = CryptoJS.PBKDF2(password, encryptionSalt, { keySize: 256 / 32, iterations: 10000});
var plaintextArray = CryptoJS.AES.decrypt(
{ ciphertext: CryptoJS.enc.Utf8.parse(ciphertext) },
CryptoJS.enc.Hex.parse(key),
{ iv: CryptoJS.enc.Latin1.parse(iv) }
);
showScreen('<span style="color: blue;">User: ' + CryptoJS.enc.Latin1.stringify(plaintextArray) + '</span>');
};
出于某种原因,代码在生成 key 时卡住了(对于 CryptoJS 来说,可能 10k 次迭代太多了???这就是 IOS 上使用的迭代)
我已经尝试了很多不同的东西,但输出是垃圾,我实际上并没有解密消息。任何帮助将不胜感激。如果您打算推荐 SJCL,请提供一些代码。 RNCryptor 使用自己的消息格式。我使用它是因为它提供了随机化的 iv。如果您也知道,请推荐其他图书馆。
感谢阅读。
最佳答案
请遵循 RNCryptor 文件格式的文档:https://github.com/RNCryptor/RNCryptor-Spec/blob/master/RNCryptor-Spec-v3.md
您应该能够从文件中获取所有必要的数据并添加您的共享 key ...
RNCryptor 数据格式版本 3 规范
Byte: | 0 | 1 | 2-9 | 10-17 | 18-33 | <- ... -> | n-32 - n |
Contents: | version | options | encryptionSalt | HMACSalt | IV | ... ciphertext ... | HMAC |
所有数据均按网络顺序(大端)。
关于javascript - RNCryptor IOS + Javascript 加密/解密 AES 256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17871069/
我以下面的代码为例。如果我错了,请帮助我。 - (void)storeToKeychain { kPassword = [self computeSHA256DigestForString:[NSSt
我正在处理一个项目,我们需要加密一些用户凭据(用户名、密码、用户 ID 等)以传递到我们的服务器。我们决定使用 AES256 来实现这一点。在对这个主题进行一些研究时,很难避免注意到那里的一个项目,R
我有一些用 RNCryptor 加密的图像文件,我想解密它们并将它们用作 Framelayout 的背景。我浏览了样本文件,但我的应用程序在一段时间后关闭并且没有显示任何图像。我用 JNCryptor
我的应用中有很多短字符串需要解密,解密速度很关键。 目前我正在试验 RNCryptor 但发现它的默认设置对于我的用例来说有点慢。否则它是一个很棒的框架:-) 加密只会进行一次,因此其性能并不重要。
这是 Asynchronously decrypt a large file with RNCryptor on iOS 的后续行动 我已经成功地使用这篇文章中描述的方法异步解密了一个大型下载文件 (
我用过RNCryptor在 Objective-C 中成功,现在需要从 Javascript 加密我的 iOS 应用程序的数据。但是,这个简单的测试失败了...... function testE
我有一个 iOS7 应用程序,它使用 RNCryptor 来保持它的文档安全地隐藏起来。 问题是,由于该应用程序有点偏执,它非常自由地使用加密,这似乎导致偶尔的双重加密。 (出于复杂的原因,主要与背景
解密时出现错误:无法执行操作 RNCryptorError 1我不明白我做错了什么。这是我的代码块 最佳答案 对于可能在此处搜索的任何人:这是 RNCryptor#174 的副本,您可能也想在那里阅读
我正在使用最新的 RNCryptor 加密文件数据,然后将其保存到磁盘。当我尝试加密大文件(超过 150MB)时,我收到内存警告并且内存增加得非常快。 我尝试了以下解决方案,但没有一个对我有用: Me
我尝试将 RNCryptor 导入我的项目以加密一些字符串。但是我很难理解如何将其导入到我的 objective-c 项目中。我通过拖放到我的项目中复制了 RNCryptor/RNCryptor.sw
我在 iOS 中使用 RNCryptor 成功加密/解密数据。 我正在尝试获取要发送到服务器的公钥,以便它可以加密一些数据。 NSString *saltString = @"salt'n'peppa
我已经使用此代码通过 RNcryptor 成功加密了一个文本文件 NSFileManager *filemgr; NSData *databuffer; filemgr = [NSFileManage
iOS 开发新手,尝试编码数据以在 db 中安全存储数据。 我在这里找到了当前示例:https://github.com/RNCryptor/RNCryptor-objc 这是我的代码。 NSStri
我正在使用 RNCryptor 加密 iOS 上的 NSData 并将其发送到 Python 服务器。到目前为止,一切都是正确的。当我尝试在服务器端解密 NSData 时,我的问题就来了。 RNCry
这是我使用 RNCryptor 加密/解密我发送到 Web 服务的 JSON 字符串的方法。我正在使用静态 IV 变量,这可能是不好的做法,但请不要关注它。这是我的做法: 注意:我正在使用 Matt
我在我的应用程序中使用 RNCryptor。我使用密码为纯文本生成了加密字符串,当我尝试使用密码解密加密字符串时,它没有给我原始纯文本,而是给了我一些随机字符串。 我想我在字符串编码/解码中遗漏了一些
我正在尝试使用 RNCryptor 的 AES256 实现来使图像加密/解密工作图书馆。 这是我目前的代码: //Encrypt file /** * var encryptedData = RNC
我从 iOS 应用程序中调用的 PHP API 要求以某种自定义方式对有效负载进行加密。我在使用 RNCryptor 在 Objective-C 中复制这种方法时遇到了麻烦。 以下是用于加密字符串的
如何使用 RNCryptor (AES128CBC) 解密 NSData?我已经尝试理解文档:https://github.com/RNCryptor/RNCryptor-Spec/blob/mast
我想使用 AES256 对称加密我的 iPhone 应用程序和我的 Java 服务器套接字。我目前正在使用 Rob Napier 的 RNCryptor/JNCryptor 库。 iPhone 上的加
我是一名优秀的程序员,十分优秀!