有没有办法得到 Cipher.getInstance 的所有可能 'algorithm/mode/padding' 字符串的列表?

is there a way to get a list of all the possible 'algorithm/mode/padding' strings for Cipher.getInstance?

我已将 BouncyCastle 添加为提供商:

java.security.Security.addProvider(
    org.bouncycastle.jce.provider.BouncyCastleProvider())

现在我想查看可用于 getInstance 的密码列表 - 例如:

Cipher.getInstance("AES/CBC/PKCS5Padding", "BC")

有没有办法查看可用的所有不同类型的加密算法的列表?

您可以遍历可用 Security.providers 并按类型过滤服务。例如:

for (Provider provider: Security.getProviders()) {
    System.out.println(provider.getName());
    for (Provider.Service s: provider.getServices()){
        if (s.getType().equals("Cipher"))
            System.out.println("\t"+s.getType()+" "+ s.getAlgorithm());
    }
}