org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。在 linux 下出现异常,但在 windows 下正常

org.apache.commons.codec.digest.Md5Crypt.md5Crypt function. exception occured under linux, but fine under windows

我们正在使用 commons-codec 加密密码,使用 org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。

它在 Windows 环境下工作正常,但在 CentOS 上会抛出异常。

我们有 3 台 centOS 测试服务器:一台是 centOS7,一台是 centOS6.7,一台是 centOS7 minimal。 最奇怪的是,代码在 centOS7 服务器上运行,但在其他两个服务器上运行不正常。它们之间的唯一区别是 OS。相同的 tomcats,相同的 jdks,相同的构建。

linux下还需要其他东西吗?

异常信息:

java.lang.IllegalAccessError: tried to access method org.apache.commons.codec.digest.DigestUtils.getMd5Digest()Ljava/security/MessageDigest; from class org.apache.commons.codec.digest.Md5Crypt

你检查过罐子了吗?和图书馆的存在?可能是出于某些不明确的安全/专利/出口原因将其删除?

或者,至少,有些事情发生了变化。这是一个不兼容的问题:看到: java.lang.IllegalAccessError: tried to access method

或者您已经(加载)了这个 class,因为您有多个不兼容的实例。尝试在你的包中找到它(调用函数,或被调用)

但为什么不直接使用库呢?

import java.security.*;
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(_originebyte);