问题标签 [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.

0 投票
2 回答
1142 浏览

objective-c - AFNetworking + RNCryptor - decrypt data before JSON parse

How are you?

I'm trying to use RNCryptor to encrypt my transactions between the iOS devices and the webserver. For that I'm using RNCryptor on iOS and PHP, and AFNetworking to communicate from iOS to WebServer.

How do I decrypt data received from AFNetworking before it's been parsed to JSON response object?


To synthesize, I have:

  • Yii Framework, server side, PHP
  • AFNetworling, client side, Objective-C
  • RNCryptor, both sides

From iOS to PHP: I can decrypt data before using it.

From PHP to iOS: AFNetworking do not decrypt data before using it.


My PHP code is something like that:

That outputs something like that:

AwFQ9+OfsHyXcSPynCrtveF7MQupQ+urd/VYeNMmt6OMxd6MhsDz4nxapvS1kVEHHbBZ4xLHqN7hTUDZos1LTWhB/CyeYoWpZSDhyFeHu9wNlHcRie6KTaHv/h14krvfb2/GHMt3GhIFqnyo7UKy/d06


My Objective-C code is something like that:

That outputs the following error:

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x15681970 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}


Thanks for your help!!


EDIT 1

I changed the code a little bit and now I can get the result:

Anyone has a hint on how to create a Response Serializer that automates that decrypt?

0 投票
1 回答
1322 浏览

php - 用php加密,用swift解密

我正在用 php 编写一个 API 来与 iOS 应用程序通信。

我想在 php 中加密这些数据,传输它们,然后在 iOS 应用程序中解密(swift 语言)

加密我 php 没问题:

但是当我在 iOS 中收到数据时,我该如何解密它们?

我看到RNCryptor当然是用 Objective-c 编写的,它可以集成到一个 swift 项目中,但是当我将文件添加到项目中时,x-code 不会问我是否要集成它们并且它不会不要制作桥接头。

是否有人已经遇到过这个问题或知道另一种快速解密数据的方法?

0 投票
1 回答
2705 浏览

c# - AES 解密非文本文件最终导致数据损坏

我正在用 C# 编写一个 Windows 应用程序,它必须与一个 Mac 应用程序(用 Cocoa 编写)进行交互。此应用程序使用 CBC(IV、密钥、盐、HMAC)加密 AES 中的文件。我对加密知之甚少,但我认为这就是它的作用。我们使用的 Cocoa 库是RNCryptor。他们有一个C# 版本,这是我在 Windows 端使用的(有一些修改,主要用于byte[]代替字符串)。

现在文本文件已正确解密,但其他文件(例如 PNG 文件)最终损坏(右侧文件正确,左侧损坏,使用 UTF8 编码,您可以看到有很多菱形?s):

差异

我相信这是由于文件的编码,但我尝试了 UTF8、默认、Unicode、ASCII ......并且输出文件总是被不同的文件大小损坏,是 ASCII 和默认编码(我相信是 UTF16)最接近在尺寸方面。

这是我使用的 RNCryptor 修改代码:

这是我解密和写入文件的代码:

这里有什么问题?提前致谢。

0 投票
0 回答
954 浏览

android - PKCS5Padding 与 PKCS7Padding 兼容性 Android iOS

我正在创建应用程序的 Android 和 iOS 版本,并且有一段需要加密的数据。我分别为 Android 和 iOS 使用 JNCryptor/RNCryptor 库,因为它们声称是兼容的。

但是,当我使用 Android 加密时,我的加密密钥长度为 114 个字符,而使用 iOS 加密的密钥长度为 112 个字符。我注意到两个库源代码之间的唯一区别是 Android 使用 PKCS5Padding 而 iOS 使用 PKCS7Padding。考虑到这两个库显然应该是兼容的,这是否重要?如果是这样,我该如何改变它以使两个加密的字符串长度相等?

编辑:安卓代码:

iOS 代码:

或者你的意思是比较这两个库?这些可以在这里找到: https ://github.com/RNCryptor/JNCryptor

0 投票
1 回答
443 浏览

ios - 如何测试文件是否已使用 RNCryptor 加密?

我有一个 iOS7 应用程序,它使用 RNCryptor 来保持它的文档安全地隐藏起来。

问题是,由于该应用程序有点偏执,它非常自由地使用加密,这似乎导致偶尔的双重加密。(出于复杂的原因,主要与背景和/或终止有关。)

有没有一种简单的方法可以查看我的文件并测试它们是否已经加密(通过应用程序本身)?

更新:最后我选择了尝试解密的非常基本的选项。如果未加密,则会导致错误代码 2“未知标头”,这意味着它未加密。

0 投票
2 回答
2596 浏览

android - 在安卓上使用 RNCryptor

我有一些用 RNCryptor 加密的图像文件,我想解密它们并将它们用作 Framelayout 的背景。我浏览了示例文件,但我的应用程序强制在一段时间后关闭并且没有显示任何图像。我使用 JNCryptor 库

我将加密图像放在原始文件夹中,如下所示:

这是我的项目文件夹

这是我活动中的代码:

该文件在 iOS 上运行良好,代码如下:

这是 logcat 输出:

08-28 19:52:11.720: E/AndroidRuntime(1063): 致命异常: main 08-28 19:52:11.720: E/AndroidRuntime(1063): java.lang.RuntimeException: 无法启动活动 ComponentInfo{net. appersian.android.wod/net.appersian.android.wod.MainActivity}:java.lang.NullPointerException 08-28 19:52:11.720:E/AndroidRuntime(1063):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java :2059) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 08-28 19:52:11.720: E/AndroidRuntime(1063):在 android.app.ActivityThread.access$600(ActivityThread.java:130) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 08 -28 19:52:11.720:E/AndroidRuntime(1063):在 android.os.Handler。dispatchMessage(Handler.java:99) 08-28 19:52:11.720: E/AndroidRuntime(1063): at android.os.Looper.loop(Looper.java:137) 08-28 19:52:11.720: E/ AndroidRuntime(1063): 在 android.app.ActivityThread.main(ActivityThread.java:4745) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 java.lang.reflect.Method.invokeNative(Native Method) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 java.lang.reflect.Method.invoke(Method.java:511) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 08-28 19:52:11.720: E/AndroidRuntime(1063): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:553) 08-28 19:52:11.720: E/AndroidRuntime(1063): at dalvik.system.NativeStart.main(Native Method) 08-28 19:52:11.720: E/AndroidRuntime(1063): Caused作者:java.lang。NullPointerException 08-28 19:52:11.720: E/AndroidRuntime(1063): at net.appersian.android.wod.MainActivity.onCreate(MainActivity.java:54) 08-28 19:52:11.720: E/AndroidRuntime(1063 ): 在 android.app.Activity.performCreate(Activity.java:5008) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 08- 28 19:52:11.720: E/AndroidRuntime(1063): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 08-28 19:52:11.720: E/AndroidRuntime(1063): ... 还有 11 个E/AndroidRuntime(1063): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java :2023) 08-28 19:52:11.720: E/AndroidRuntime(1063): ... 11 更多E/AndroidRuntime(1063): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 08-28 19:52:11.720: E/AndroidRuntime(1063): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java :2023) 08-28 19:52:11.720: E/AndroidRuntime(1063): ... 11 更多

我在解密文件时做错了什么?

更新:我将 e.printStackTrace() 添加到 try/catch,这是我的新 logcat:

08-28 20:54:10.496: W/System.err(1487): org.cryptonode.jncryptor.InvalidHMACException: 不正确的 HMAC 值。08-28 20:54:10.496: W/System.err(1487): 在 org.cryptonode.jncryptor.AES256JNCryptor.decryptV3Data(AES256JNCryptor.java:244) 08-28 20:54:10.496: W/System.err( 1487): 在 org.cryptonode.jncryptor.AES256JNCryptor.decryptV3Data(AES256JNCryptor.java:319) 08-28 20:54:10.496: W/System.err(1487): 在 org.cryptonode.jncryptor.AES256JNCryptor.decryptData(AES256JNCryptor .java:276) 08-28 20:54:10.496: W/System.err(1487): 在 net.appersian.android.wod.MainActivity.onCreate(MainActivity.java:50) 08-28 20:54:10.496 : W/System.err(1487): 在 android.app.Activity.performCreate(Activity.java:5008) 08-28 20:54:10.496: W/System.err(1487): 在 android.app.Instrumentation。 callActivityOnCreate(Instrumentation.java:1079) 08-28 20:54:

0 投票
2 回答
874 浏览

commoncrypto - 如何在 node.js 中加密并使用 RNCryptor 解密

我在使用节点加密数据和使用 RNCryptor 解密时遇到问题。我的理解是 RNCryptor 使用了特殊的数据格式?

密文生成如下:

我正在像这样解密:

我该怎么做?当我当前尝试解密时,我得到一个空的 NSData 并且没有错误。

0 投票
0 回答
42 浏览

password-encryption - 从明文识别加密

我正在使用 RNCryptor 为 Objective C 项目加密/解密 (AES256) 文件。

如果所选文件已加密(例如,使用 AES256),我希望我的应用程序要求输入密码,或者如果不是,则直接打开它。有没有办法识别给定文件是否已加密?

0 投票
2 回答
1079 浏览

ios - 无法从密码和盐生成 AES 256 密钥以用于 RNCryptor

我想用 Salt 生成一个用于 AES 256 加密的密钥。我正在使用 BBASE lib,请参考此链接: 在 iOS 中创建随机 128 位 AES 加密密钥

我的代码是:

我想在下面的代码中使用这个“密钥”:(这里我使用的是 RNCryptor lib)

我需要传递 NSString 类型的键,但是当我将 NSData 转换为 NSString 时,它会给出 NULL 值并且我的应用程序崩溃。我应该怎么办??有什么解决办法吗??

0 投票
1 回答
718 浏览

ios - RNCryptor:获取公钥作为 NSString

我正在使用 RNCryptor 成功加密/解密 iOS 中的数据。

我正在尝试将公钥发送到服务器,以便它可以加密一些数据。

此时,key里面有一些数据。但是,我似乎无法弄清楚如何将公钥作为字符串获取:

我尝试了不同的编码,但似乎没有任何效果。

这是来自 RNCryptor 的 keyForPassword 方法:

我觉得我在做一些严重错误的事情,因为谷歌搜索的结果很少。