【问题标题】:how do I perform an md5sum on an exploded ear?如何在爆炸的耳朵上执行 md5sum?
【发布时间】:2015-12-22 18:18:40
【问题描述】:

我工作场所中的大多数应用程序工件都是未爆炸的 ear 或 war 文件。由于它们是简单的文件,因此很容易对工件执行 md5sum 以进行比较。一小部分应用程序被部署为爆炸耳朵。作为目录,我无法对其执行简单的 md5sum 。我正在寻找一种替代方案——要么是一种更灵活的实用程序,它可以针对不同文件类型的工件执行散列,要么是不同的技术。

我的一个想法是即时压缩 ear 或 war 目录(作为临时文件或管道)并针对此临时工件运行 md5sum。这将是我的偏好,但我不确定该怎么做。任何建议或指导将不胜感激。

【问题讨论】:

  • 你试过md5sum他们的绝对路径吗?它可以是一个替代方案。对于一个文件,你可以 md5sum 其绝对路径和它的内容,以避免与目录绝对路径内容相同的文件发生冲突。

标签: java war ear md5sum


【解决方案1】:

我的建议是使用 MessageDigest 类来创建您的哈希...请注意,此类上的各种 update() 方法只需采用 bytebyte[]ByteBuffer 并且不要依赖这些字节来自哪里。

所以我至少会考虑做的事情——取决于效率和这个过程的运行速度——将依次遍历您的文件和update()您的 MD5 和每个文件的内容。继续更新直到最后,最后加上最后的digest() 以获得最终结果。

您必须绝对确保每次都以相同的顺序遍历文件,因为显然不同的顺序会导致不同的哈希值。

【讨论】:

    【解决方案2】:

    一个想法是将目录压缩到一个管道,然后在管道上执行和 md5sum:

    jar -c <directory> | md5sum
    

    【讨论】:

    • 上面有个问题就是每次返回的结果都不一样!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2011-03-23
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多