标签: canonicalization

如何加密哈希JSON对象?

以下问题比最初看起来更复杂.

假设我有一个任意的JSON对象,可能包含任何数量的数据,包括其他嵌套的JSON对象.我想要的是JSON数据的加密哈希/摘要,而不考虑实际的JSON格式本身(例如:忽略换行符和JSON令牌之间的间距差异).

最后一部分是一项要求,因为JSON将由许多不同平台上的各种(de)序列化程序生成/读取.我知道至少有一个Java的JSON库在反序列化期间读取数据时完全删除了格式.因此,它将打破哈希.

上面的任意数据子句也使事情变得复杂,因为它阻止我以给定顺序获取已知字段并在哈希之前连接它们(大致考虑Java的非加密hashCode()方法是如何工作的).

最后,将整个JSON字符串散列为一块字节(在反序列化之前)也是不可取的,因为在计算散列时应该忽略JSON中的字段.

我不确定这个问题有一个很好的解决方案,但我欢迎任何方法或想法=)

json cryptography canonicalization

51
推荐指数
3
解决办法
2万
查看次数

我使用番石榴的理想缓存

过去几周我一直在尝试使用guava的MapMaker找到理想的缓存实现.请在此处此处查看我之前的两个问题,以了解我的思考过程.

根据我所学到的,我的下一次尝试将放弃软值,转而使用maximumSize和expireAfterAccess:

ConcurrentMap<String, MyObject> cache = new MapMaker()
        .maximumSize(MAXIMUM_SIZE)
        .expireAfterAccess(MINUTES_TO_EXPIRY, TimeUnit.MINUTES)
        .makeComputingMap(loadFunction);
Run Code Online (Sandbox Code Playgroud)

哪里

Function<String, MyObject> loadFunction = new Function<String, MyObject>() {
   @Override
   public MyObject apply(String uidKey) {
      return getFromDataBase(uidKey);
   }
};
Run Code Online (Sandbox Code Playgroud)

但是,我仍在努力解决的另一个问题是,即使它们的时间很长,这个实现也会驱逐对象,即使它们是强烈可达的.这可能会导致多个对象在环境中浮动相同的UID,这是我不想要的(我相信我想要实现的目标称为规范化).

所以,据我所知,唯一的答案是有一个额外的映射作为一个interner我可以检查,看看数据对象是否仍在内存中:

ConcurrentMap<String, MyObject> interner = new MapMaker()
        .weakValues()
        .makeMap();
Run Code Online (Sandbox Code Playgroud)

并且将修改加载函数:

Function<String, MyObject> loadFunction = new Function<String, MyObject>() {
   @Override
   public MyObject apply(String uidKey) {
      MyObject dataObject = interner.get(uidKey);
      if (dataObject == null) {
         dataObject = getFromDataBase(uidKey);
         interner.put(uidKey, dataObject);
      }
      return dataObject;
   } …
Run Code Online (Sandbox Code Playgroud)

java caching canonicalization guava

20
推荐指数
1
解决办法
3163
查看次数

Java:XML规范化

在Java中制作规范形式的XML文件最简单的方法是什么?你有完成的代码吗?我在网上找到了几个链接,比如这个,这个,这个,但我不能让它起作用:/

谢谢,

伊万

编辑:我使用了那里提出的规范化,但我得到了奇怪的结果.为了更加精确,这个方法不会删除元素之间的空格......这就是我得到的:

<Metric xmlns="http://www.ibm.com/wsla" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="total_memory_consumption_metric" type="double" unit="Mbit" xsi:schemaLocation="http://www.ibm.com/wsla WSLA.xsd">                        <Source>ServiceProvider</Source>                        <MeasurementDirective resultType="double" xsi:type="StatusRequest">                              <RequestURI> ***unused*** </RequestURI>                        </MeasurementDirective>                  </Metric>
Run Code Online (Sandbox Code Playgroud)

java xml canonicalization

15
推荐指数
1
解决办法
1万
查看次数

从图的集合中拒绝同构

我有一个15M(百万)DAG(有向无环图 - 实际上是指向超立方体)的集合,我想从中删除同构.这个的常见算法是什么?每个图都相当小,一个维数为N的混合立方体,其中N为3到6(现在),得到64个节点的图,每个节点为N = 6的情况.

使用networkx和python,我实现了它,这适用于300k(千)的小集合就好(几天后运行).

def isIsomorphicDuplicate(hcL, hc):
    """checks if hc is an isomorphism of any of the hc's in hcL
    Returns True if hcL contains an isomorphism of hc
    Returns False if it is not found"""
    #for each cube in hcL, check if hc could be isomorphic
    #if it could be isomorphic, then check if it is
    #if it is isomorphic, then return True
    #if all comparisons have been made already, then it is not an isomorphism and …
Run Code Online (Sandbox Code Playgroud)

graph isomorphism canonicalization

15
推荐指数
1
解决办法
1636
查看次数

在C#中生成XML文档哈希

在C#中散列XML文档的最佳方法是什么?我想散列一个XML文档,以便我可以判断它是否从生成时手动更改.我没有使用它来保证安全性 - 如果有人更改XML并更改哈希值以匹配,则可以.

例如,我会对根的子节点进行哈希并将哈希存储为根的属性:

<RootNode Hash="abc123">
    <!-- Content to hash here -->
</RootNode>
Run Code Online (Sandbox Code Playgroud)

c# xml hash canonicalization

10
推荐指数
2
解决办法
8961
查看次数

如何在Java中实现规范化映射?

我目前正在编写自己的小ORM,并发现自己面临着创建规范化映射的任务,以防止从数据库中多次加载同一个实体.

我目前的做法是使用a HashMap<Object, WeakReference<Object>>.密钥是映射的数据库实体的主键(ArrayList<Object>如果它是复合键),则值为WeakReference<Object>.

我的主要问题是如何清理地图?当一个对象不再使用时,地图中的弱引用将会出现null,我只会在下一次查找时发现这一点(或者,如果我不再查看该对象,则永远不会发现).ReferenceQueue当它们被清除时,我可以使弱引用注册为a ,然后每次查看时检查该队列.清除的引用不会给我任何关于哪个对象被清除的提示,所以我想我必须子类WeakReference将该键存储在地图中,所以我可以在清除引用后将其删除.

这是要走的路,还是有更简单的方法来实现它?

java orm weak-references canonicalization

10
推荐指数
1
解决办法
5404
查看次数

替换'realpath'来解析路径中的"../"和"./"

realpath 做我需要的,但只有在路径中的文件确实存在时才有效.

无论目录/文件是否实际存在,我都需要一个从字符串(例如../some/./directory/a/b/c/../dsome/directory/a/b/d)返回规范化路径的函数

基本上相当于PathCanonicalize在Windows上.

这样的功能是否已经存在?

c realpath canonicalization

10
推荐指数
4
解决办法
2035
查看次数

Canonical Representation意味着什么及其对网站的潜在漏洞

我在google上搜索了规范表示的含义,并发现了完全过于神秘的文档.任何人都可以快速解释规范表示,以及网站中规范表示攻击的典型漏洞是什么?

representation canonicalization

9
推荐指数
1
解决办法
1万
查看次数

BigDecimal的规范表示

BigDecimal包含任意值的Java简化为规范形式的最简单方法是什么,以便BigDecimal使用该equals()方法将两个代表相同数字的数字相等?

我使用这样的代码从任意字符串解析我的数字:

BigDecimal x = new BigDecimal(string1, MathContext.DECIMAL64);
BigDecimal y = new BigDecimal(string2, MathContext.DECIMAL64);
Run Code Online (Sandbox Code Playgroud)

由于(string1,string2)是任意的,它们可以是,例如,("1","1.0000")或("-32.5","1981")......

我正在寻找的是该方法的最简单(最短/最干净的代码)实现规范化,以上断言

assert x.compareTo(y) != 0 ||
    (canonicalize(x).equals(canonicalize(y)) && 
     x.compareTo(canonicalize(x)) == 0 && y.compareTo(canonicalize(y)) == 0);
Run Code Online (Sandbox Code Playgroud)

将会成功...:

public static BigDecimal canonicalize(BigDecimal b) {
    // TODO:
}
Run Code Online (Sandbox Code Playgroud)

java math equals bigdecimal canonicalization

7
推荐指数
1
解决办法
379
查看次数

了解 Nauty 算法

我正在尝试理解 Nauty 算法。遵循这篇文章:http://www.math.unl.edu/~aradcliffe1/Papers/Canonical.pdf
在该算法中,根据顶点的度数以及一个组与其他组相对应的相对度数(组动作)来区分顶点。通过这种方式,我们得到的组为:

1379|2468|5
完成此步骤后,将按照本文第 7 页中所述完成拆分。本文中的一张图片是: 搜索树

我无法理解分裂是如何进行的, 1379|2468|5为什么会分到不同的组,然后又1|9|37|68|24|5 分到另一个组。1937

algorithm graph-theory isomorphism canonicalization

6
推荐指数
1
解决办法
2597
查看次数