java - 如何列出可用的密码算法?

标签 java encryption cryptography javax.crypto

我正在使用 Cipher.getInstance(String algorithm) 获取 Cipher 实现。我的印象是,我可能传递的可用算法名称根据类路径中存在的库而有所不同。

我想编写一个简单的程序,可以使用不同的类路径运行,该程序将列出可用的密码算法名称。我需要调用什么方法来获取此列表?

最佳答案

一旦我有了供应商列表(如 JB Nizet 的帖子中所述),我仍然没有算法列表。我发现每个 Provider 都充当一个 Properties 对象,并且 Properties 对算法名称进行编码。我并不完全清楚这是否是查找它们的正确方法,以及所有其他属性的确切含义,但我只是编写了一个例程,将所有属性喷出到 System.out 并查找描述内容的各种字符串我一直在寻找,直到找到为止。

import java.security.*;

for (Provider provider: Security.getProviders()) {
  System.out.println(provider.getName());
  for (String key: provider.stringPropertyNames())
    System.out.println("\t" + key + "\t" + provider.getProperty(key));
}

关于java - 如何列出可用的密码算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61926661/

相关文章:

c# - 简单使用 RSACryptoServiceProvider KeyPassword 失败

algorithm - 我们应该如何降低领先的加密算法在不久的将来意外破解的风险?

java - 使用 hashmap 读取 xls 文件

java - 在 GWT 应用程序中捕获 ctrl-z(撤消)和 ctrl-y(重做)

java - Java 方法如何检索属于该特定方法的方法对象? ( java )

c# - 如何修复 Rijndael 解密中的 'Org.BouncyCaSTLe.Crypto.InvalidCipherTextException: ' pad block corrupted''

c# - C# 使用 AES 对 Java 加密/解密的奇怪行为

c++ - 通过时间比较猜测字符串。是否可以?

.net - 在 .NET 中验证 RSA 签名

Web 应用程序中的 Java Spring 错误处理性能