- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 iOS 应用程序和 Express Node.js 应用程序进行通用 - hmac 验证。
使用给定样本生成 hmac:http://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/#js
遇到以下问题:子类化 AFHTTPRequestOperationManager 以获取对 POST:
的访问权限我想要 hmac nsdictionary parameters
。
因此将 nsdictionary 转换为 json - hmac it - 并在请求中设置 hmac header 。在接收端,我使用 crypto-js 和express 来访问 req.body
- 和 hmac json 对象。
问题是! - 这些键的顺序不同,即使我强制对 nsdictionary 中的键进行排序,转换后的 json 也不会按顺序排列。
经过几个小时的谷歌搜索,我接受了 json 对象无法以可靠的方式排序。
那么忽略顺序来 hmac 和 nsdictionary 的最佳实践是什么?(我只能对几个键进行 hmac,但这会不太通用,意味着添加字典键需要在 ios 和 express 中更改代码)
仅根据 URI 生成 hmac - 工作正常,但它是一种打开方式:)
更新:更具体一点。
在应用程序上,我将 nsdictionary 转换为 json,然后计算 json_string 的 hmac
NSDicationary * dic = @{@"key1", "value1",@"key2", "value2"}
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic
options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
error:&error];
NSString * json_str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]
我做了一个 AFNetworking POST 请求,调用将我的 nsdictionary 作为参数
传递:
- (AFHTTPRequestOperation *)POST:NSString *)URLString parameters:(id)parameters success:(void (^)(AFHTTPRequestOperation *operation,id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
在接收器应用程序(node.js/express)上,我从 POST 请求中获取包含 javascript 对象的 ctx.req.body -> 但这里它的顺序与应用程序中的 json 编码字符串不同(而且我还没有找到保留顺序的方法)
因为我不知道 nsdictionary 中有哪些键,所以静态 key-hmac 不起作用。
最佳答案
由于 JSON 只是一个字符串,因此在创建后不存在排序问题。重点是在将字典转换为 JSON 字符串后创建 HMac 值。
在发送方创建 JSON 表示形式,在 HMac 上创建 JSON。将 HMAc 结果与 JSON 一起发送。
在接收方 HMac 上接收到的 JSON 并与接收到的 HMac 值进行比较。
两个 HMac 应该相等。
另一种选择是在每一侧编写一个方法,以相同的预定义顺序检查每个字典元素键/项目,并从中组成一个字符串或数据对象。然后 HMAC 结果。
关于ios - hmac nsdictionary - 表达 req.body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813269/
我在使用以下代码来创建NSDictionaries的NSDictionary时遇到麻烦。没有编译错误,但是在运行时,此代码失败。 NSDictionary *section0 = [NSDiction
我得到了 '[NSDictionary]!? is not convertible to [NSDictionary]?' error on following code. var jsonRes
我有以下代码: NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *g
目前我有以下代码可以从 xml 文件中获取数据。这到目前为止有效 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)el
在 Objective C 中,我们将字典值的 NSArray 分配给 NSDictionary 变量并获取键的值,如下所示,NSDictionary *dictValue = [array obje
将对象从一个 NSDictionary 复制到另一个 NSDictionary 的最简洁方法是什么?我必须从字典中提取特定值并将它们存储在新字典中。目前我有一些简单的代码,像这样...... NSSt
希望有人能帮助我: 我正在使用 NSDictionary 来填充 UITableView。它的模型类似于 [key:userID => value:userName]。tableView 只填充了 u
我有一本字典,其中包含从解析 JSON 中提取的其他字典中的子项。结构如下所示: { children = (
我需要检查 nsdictionary 中的元素是否不等于 normal,然后将该元素复制到一个数组中作为我的 UITable 的数据源。 这是一个条目的例子: Trailer = {
我正在尝试将数据添加到嵌套在其他词典中的 NSMutableDictionary。 在添加数据的代码运行之前开始输出 DayData Dictionary { //DayData
我的应用程序有一个 NSDictionary,其中包含许多其他 NSDictionary。如果我打印出这本词典,它的内容如下: oxip = { created = "2014-02-
我有一个 NSDictionary 记录这个: address = "30 East 23rd Street"; address1 = "30 East 23rd Street";
好的,我有一个 .plist 文件, 其中我有一个 NSDictionary *StoredAddresses, 在 StoredAddresses 中,是另一把 NSDictionary 我知道我可
您好,我在将数据从一个 NSDictionary 复制到另一个我使用的 NSDictionary 时遇到问题 [dicForFoodproduct_fromWeb initWithDictionary
我有一个包含四个对象的NSDictionary。每个对象都是一个包含数千个对象的 NSDictionary。我已经通过记录顶级字典的描述来验证它包含它应该包含的内容。但是,当我运行下面的代码以枚举该顶
给定的图像具有数据结构 我能够从 FirstText 和 LastText 获取数据,NSPredicate 是 subData.FirstText contains[cd] %@ OR subDat
我有一些装满书籍的 [NSDictionary],我正在检查这些书籍的值以便更好地在 UICollectionView 中显示内容。我正在检查一个 key 是否包含多个 ISBN 编号。如果是这样,我
我有一个很大的 NSDictionary,里面有一个较小的 NSDictionary。我想自动释放较大的一个,并保留第二个。我的初始化方法中有这段代码: // Autoreleased stage d
我对 Objective C 比较陌生。我有一个包含 NSDictionary 对象的 NSArray。我正在调用网络服务来获取数据。我有一个 PickerView,这是它的数据源(我实现了 numb
我想添加一个不同的字典作为另一个键字典的值,但在我的循环中,我发现相同的值添加到我所有的字典键。这是我的代码: for (MyObject *message in messages) {
我是一名优秀的程序员,十分优秀!