Java FlexProvider NoSuchAlgorithmException SHA-1

Java FlexProvider NoSuchAlgorithmException SHA-1,java,Java,我想使用,我正在尝试实例化一个简单的de.flexiprovider.api.MessageDigest;使用下一个代码 MessageDigest digest = Registry.getMessageDigest("SHA-1"); 但我在线程“main”de.flexiprovider.api.exceptions.nosuchalgorithexception:SHA-1中得到了异常。你能帮我吗?我需要实例化SHA-1算法。考虑到Registry.getAlgorithms(Regi

我想使用,我正在尝试实例化一个简单的de.flexiprovider.api.MessageDigest;使用下一个代码

MessageDigest digest = Registry.getMessageDigest("SHA-1");

但我在线程“main”de.flexiprovider.api.exceptions.nosuchalgorithexception:SHA-1中得到了异常。你能帮我吗?我需要实例化SHA-1算法。

考虑到
Registry.getAlgorithms(Registry.MESSAGE_DIGEST)的输出结果
我认为上面的代码应该是

MessageDigest digest = Registry.getMessageDigest("SHA1");
编辑:

与大多数JCE库一样,FlexProvider需要在您的程序中注册一次作为安全提供程序,因此您还需要对

Security.addProvider(new FlexiCoreProvider());

应用程序初始化后。

首先需要按以下方式注册算法:

Registry.add(Registry.MESSAGE_DIGEST, de.flexiprovider.core.md.SHA1.class, "SHA-1");

有趣的是,因为我不必这样做,我答案中的代码直接起作用。查看javadoc for
Registry.add()
它说这是在给定名称下注册实现的,所以我认为您刚刚创建了一个别名,因为返回的
Registry.getMessageDigest(“SHA1”)
的实现类型是
de.flexiprovider.core.md.SHA1
。当我只放置Registry.getMessageDigest(“SHA1”)时)我得到了错误,没有这样的算法,在修改示例时,我也悄悄地将初始化代码片段放入代码中,所以我编辑了我的答案。对不起;)