问题标签 [rncryptor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - RNCryptor:更改哪些设置以提高性能?
我的应用程序中有很多短字符串要解密,解密速度至关重要。
目前我正在尝试,RNCryptor
但发现它的默认设置对于我的用例来说有点慢。否则它是一个很棒的框架:-)
加密只会进行一次,因此其性能并不重要。
我很好地放弃了速度保护,因为我只想有一个非常基本的加密。
您建议使用哪些RNCryptor
设置来加密和解密以实现最快的解密性能?一个简短的代码示例会很棒!
同样,我对当前用例的非常基本的加密保护很好。
ios - 大文件的 RNCryptor 内存问题
我正在使用最新的 RNCryptor 加密文件数据,然后将其保存到磁盘。当我尝试加密大文件(超过 150MB)时,我收到内存警告并且内存增长非常快。
我尝试了以下解决方案,但它们都不适合我: 在 iOS Dispatch queues 和异步 RNCryptor上使用 RNCryptor 加密/解密大文件时出现内存问题
这是我的方法: { - (void)encryptFileDataWithFilePath:(NSString *)filePath { dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
}
任何想法 ?谢谢!
javascript - SJCL 加密结果错误的文件大小
我已经在我的一个应用程序中成功实现了 Rob Napier 的 iOS AES 加密方法。我现在希望能够使用我的 JavaScript 实现加密和解密该应用程序中的文件。我正在使用 FileReader 从用户那里获取本地信息并加载它
完成此操作后,文件将使用斯坦福 JavaScript 加密库进行加密,最后可以下载加密文件:
问题是加密文件比原始文件大得多。在我的 iOS 实现中情况并非如此,它工作得很好。当然,它不能毫无错误地解密。事实上,生成的文件将有 0 个字节的大小。
我希望有人可以向我指出我的代码中的错误。那真的很棒。
@邓肯:
谢谢你。我对此进行了调查,但我不确定我必须采取的所有步骤。尤其是它们在代码中的含义。也许有人可以在这里帮助我。非常感谢!
加密
- 生成随机加密盐
- 使用 PBKDF2 生成加密密钥(请参阅您的语言文档了解如何调用它)。将密码作为字符串、随机加密盐和 10,000 次迭代传递。
- 生成随机 HMAC 盐
- 使用 PBKDF2 生成 HMAC 密钥(请参阅您的语言文档了解如何调用它)。将密码作为字符串、随机 HMAC 盐和 10,000 次迭代传递。
- 生成随机 IV
- 使用加密密钥(上图)、IV(上图)、AES-256 和 CBC 模式加密数据。这是几乎所有 AES 加密库的默认模式。
- 将您的标头和密文以及 HMAC 密钥(上图)和 PRF“SHA-256”(有关 PRF 函数的名称,请参阅您的库的文档;这也可能称为“SHA- 2, 256 位”)。
- 按照上面给出的格式将这些元素放在一起。
php - RNCryptor PHP 加密函数返回无效的 base64 数据
我在 iOS 项目中使用 RNCryptor 进行加密。该应用程序解密从服务器发送的 JSON 字符串。在服务器上,使用RNCryptor repo中未修改版本的 PHP 函数对字符串进行加密。
使用相同的密码加密所有字符串,返回的 base64 数据有时对于我传递给 RNCryptor PHP 加密函数的不同 JSON 字符串无效。在应用程序上,我在尝试从服务器解密数据时看到此错误: “操作无法完成。(net.robnapier.RNCryptManager 错误 -4301。)”
为了向您展示一些示例,此 base64 字符串已成功解密:
AwHwsZqlDpvAcmWX92UtkQSKcHOq18gLsLFtP4FujV3DtXVrtGL86CFY9KAs23HaAoYINTLH3ouUJPpyQEcfXni+rJUJghTFBB24kk52aU0GQ/8IIgfnXPUywUuNwD4n7DnweaS3DdmdhFBQIUpSaCEg4T5bMPhIvUAndVMvJwc/SjbhJoB+bUqRDcPYXPzMiEW1i4jea/ssE87PcX9/NZtfkoNyiY7KLRy/dhgsADde1Q==
然而,这个失败了:
AwHH7y0mnQvtWNCKa73jnS2DG63ylqDBc5iema3G6+/EkwPxiIkrPQHyJLvd3MO3mMIPsJjDK1C3uBCoHDc+Gzm0NJhBa08zs1twzZQ1jBdyt/q2AnGX99nku7MqF1oJOJ8nN1lriwYcFyvjBoBkEAAG28umjwxb5Y1t29dXtJzCwsrEVERs+SNkRE5C/j++bMPTV28EmR7LviyaMFAzpT+F5yUlLp2zRQgaQfyG8RlJTcvc+IqsrOisrDn7umDg+ii/Z9GDLlMkhu7OL1lHfcmD
似乎只有具有“=”字符的 base64 字符串才能成功解密。同样,我使用相同的密码来加密和解密这两个字符串。为什么 PHP 加密函数会这样?
PS 传入的 JSON 字符串完全有效(使用 PHP json_encode() 函数生成)。
ios - RNCryptor 密码加密
我以下面的代码为例。如果我错了,请帮助我。
我的应用程序有一个设置和登录页面。每当用户创建帐户时,我希望将密码存储在加密的钥匙串中,我可能应该使用用户名来增加安全性。所以我想在用户创建帐户时使用RNCryptor在钥匙串中加密用户的用户名和密码。
我不确定kPassword
在 RNEcryptor 方法中使用什么密码。我最初想使用由 组成的 SHA256 哈希UUID, username and a random 40 character salt hash
将密码加密到钥匙串中。后来我找到了 RNCryptor,我想知道是否可以改用SHA256 hash
askPassword
还是有其他选择?
ios - 使用 RNCryptor 的 iPhone 应用程序是否需要任何加密注册?
使用 RNCryptor 发布到应用商店的应用是否需要注册导出加密注册(即获取加密注册号 ERN)?
我已经删除了所有 SSL 文件,因为我不使用它们,看起来剩余的代码只使用了 Apple 的 CommonCrypto 库,尽管我不是 100% 的。
encryption - 文件末尾缺少 RNCryptor 字节
使用 RNCryptor 加密和解密文件并遇到一个问题,我似乎没有得到完整的文件。
我的加密如下
RNCryptor git 页面上的示例几乎是标准的。输入文件是一个下载的文件,之前用
为完整性解密在这里
再次与 git 页面非常相似。
但是,当我加密和解密同一个文件时,我的尾部短了 60 个字节。在我开始巧妙地支持可恢复下载之前,这不是一个大问题。然后丢失的字节很关键,因为它们出现在文件的中心。
我已经检查了进出的内容,如下所示
- 发送到加密器的字节数 19,615,005(文件大小)
- 加密器创建的加密字节数 19,615,026
- 解密收到的字节数或 19,615,026
- 来自解密器的解密字节数 19,614,944
我努力了
- 在 RNCryptor.h 中更改 .options = kCCOptionPKCS7Padding
- 我自己尝试填充到块大小和 16 字节边界
- 更改了加密器完成和 readStreamBlock 调用以确保它不是时间问题
- 调查RNCryptorEngine中的finishWithError,但没有错误
填充到块大小有点工作,因为我可以清理我填充的零,但它并不理想。
我在挠头。以前有人经历过这个循环吗?
更新:
花了很长时间摸不着头脑,意识到我没有能力及时找出问题所在。但是,我退回到简单的解决方案,这很有效,但对我来说不是,因为这会给我带来记忆问题。
如果我将它与以前的解决方案混合,我会遇到同样的问题。
objective-c - 密码验证 - 如何安全地检查输入的密码是否正确
我正在开发一个需要多个密码才能访问不同数据区域的应用程序。例如,一群人可以建立一个需要密码验证才能查看的聊天。
这是我正在考虑这样做的方式:
我有我的关键字,假设说:
香蕉
当用户输入他们的密码时,我使用 RNCryptorBanana
使用他们输入的密钥进行加密,并将该加密字符串存储到服务器。
后来,当有人尝试输入密码时,我从服务器获取哈希值并尝试使用他们输入的密码作为密钥对其进行解密。如果解密的值等于Banana
我知道他们输入了正确的密码。
我是安全新手,所以我不确定这是否是一个合适的解决方案。感谢所有帮助。
更新
在进行了@Greg 和恰当命名的@Anti-weakpasswords 建议的一些更改之后,这就是我所拥有的:
ios - 验证加密数据是否未被篡改
我有一个使用 RNCryptor v2.2 ObjectiveC 库加密的字符串。加密后,它本地存储在 iPhone 上。
当想要取回字符串时,在解密之前,我想确保加密的内容没有被篡改(比如手动更改字符)。
我怎样才能验证这一点?
提前致谢!
ios - 使用给定密钥在 iOS 中使用 AES128 CTR 加密和解密随机 NSString
我不确定我的解决方案有多安全。
Rob Napier有一个非凡的框架 ( RNCryptor ) 可以在 iOS 和其他系统中进行加密和解密。
据我所知,他正在使用AES-CBC,这实际上是 CommonCryptor.h 的标准
但是,我的要求迫使我使用AES-CTR。两者都非常相似,所以理论上它必须是简单的。但事实并非如此。
CommonCryptor.h 周围缺乏相关信息。它是有史以来最糟糕的解释框架之一。
与CBC合作,您只需致电CCCrypt()
. 但是,要使用CTR ,您应该调用: CCCrytorCreate()
, CCCryptorUpdate()
, CCCryptorFinal(
) 和CCCryptorRelease()
尝试加密我的数据时,我每次都收到不同的数据,当然解密它的结果不正确。
我在第一种方法中遇到了两个大问题:密钥的长度和写入 dataOut 的字节数。
我对问题进行了排序:
1.- 32 个字符的 NSString 键
2.- 以所需长度剪切 dataOut
最后这是我的加密和解密代码:
调用它:
我发布我的解决方案是因为 Stackoverflow 中的 AES CTR 没有太多问题。同样,如果有人想检查它并告诉我是否有问题,将不胜感激。
这个解决方案有多安全?破解系统容易吗?为 AES-CTR 添加更多安全性的可能性是什么?