【问题标题】:Cryptography - RSA Algorithm in Java 1.4密码学 - Java 1.4 中的 RSA 算法
【发布时间】:2010-06-21 01:35:10
【问题描述】:

我正在使用 Java 1.4.2_10,我正在尝试使用 RSA 加密:

我收到以下代码的 NoSuchAlgorithmException:

cipher = Cipher.getInstance("RSA");

这是错误:

java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA
        at javax.crypto.Cipher.getInstance(DashoA6275)

这在 1.5 及更高版本中运行良好,但是我需要使用 1.4。我可以使用任何解决方法或第三方产品来解决此问题吗?

提前致谢。

【问题讨论】:

    标签: java encryption cryptography rsa java1.4


    【解决方案1】:

    您可以安装Bouncy Castle 加密提供程序。拿起他们的罐子,然后打电话给Cipher.getInstance("RSA", "BC")

    【讨论】:

    • 并告诉java.security.Security 以某种方式使用提供程序。 Bouncy Castle 的文档并不总是很容易找到,所以这里有一种方法:Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());(也许还有其他方法?)
    • 感谢您的回答!但现在我收到此错误:“java.lang.SecurityException:提供者 BC 可能未由 javax.crypto.SunJCE_b.a(DashoA12275) 上的受信任方签名”我下载了“bcprov-jdk14-145.jar “来自官方网站,它应该是签名的。我错过了什么吗?再次感谢!
    【解决方案2】:

    Java 1.4 绝对支持RSA,所以这不起作用的事实表明更深层次的东西是错误的。这是否适用于任何其他密码(例如“AES”或“DES”)?您应该检查以确保您的提供程序配置正确。以下代码在您的系统上的输出是什么:

    System.out.println("Providers: ");
    java.security.Provider[] providers =  java.security.Security.getProviders();
    for(int x = 0; x < providers.length; x++) {
        System.out.println("\t" + providers[x]);
    }
    
    System.out.println();
    System.out.println("Algorithms: ");
    java.util.Set algs = java.security.Security.getAlgorithms("Cipher");
    
    java.util.Iterator i_algs = algs.iterator(); 
    while(i_algs.hasNext()) {
        System.out.println("\t" + i_algs.next());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多