散列有效负载,如ruby中的表单数据或json

时间:2015-08-23 16:26:29

标签: ruby json hash multipartform-data sha

出于缓存目的,我想为各种有效负载生成sha256哈希。哈希应该足够安全,以忽略字段顺序的变化。

对于表单数据,这将非常简单,例如此正文foo=bar&test=data可以按&=进行拆分,排序,加入,然后像这样进行散列:

require 'digest'
data = "test=data&foo=bar"
joined_data = data.split("&").map {|pair| pair.split("=") }.sort { |a,b| a[0] <=> b[0] }.flatten.join
Digest::SHA256.hexdigest joined_data
# => "cf0bb2aa96a34e404a2901eec34214033dbf73f4242330f0e77c534bf38da585"

但对于JSON数据,这要困难得多。首先,键的顺序与内容无关,但是数组内部的顺序确实很重要,键和数组可以嵌套等等......

我可以实现一个JSON.parse(body),然后将ruby哈希值转换为一个数组,对键进行排序,并在完成之前(也在数组内部)执行所有操作。

第一个问题:是否已有哈希JSON数据的解决方案?

第二个问题:除了JSON,表单数据,普通字符串和二进制数据,还应该考虑哪些其他数据结构,哪些顺序不重要? XML?还有什么吗?

0 个答案:

没有答案