我需要在Ruby中为变量创建一个签名字符串,其中变量可以是数字、字符串、哈希或array.哈希值和数组元素也可以是这些类型中的任何一种.
该字符串将用于比较数据库中的值(本例中为Mongo).
我的第一个 idea 是创建一个JSON编码值的MD5哈希,如下所示:(body是上面提到的变量)
def createsig(body)
Digest::MD5.hexdigest(JSON.generate(body))
end
这几乎是可行的,但是JSON.generate不会每次以相同的顺序对哈希的键进行编码,因此createsig({:a=>'a',:b=>'b'})
并不总是等于createsig({:b=>'b',:a=>'a'})
.
创建签名字符串以满足此需求的最佳方法是什么?
注意:对于我们当中的细节,我知道你不能用数字或字符串来表示.在这种情况下,我会直接打MD5.hexdigest()
.