sun的加密api包里面不就有么!

解决方案 »

  1.   

    具体一点好吗?
    我编译时报错
    java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA
    at javax.crypto.Cipher.getInstance(DashoA6275)
      

  2.   

    http://www.bouncycastle.org这个第三方库里很全的!
      

  3.   

    我已经从http://www.bouncycastle.org上下载了最新版的lcrypto-jdk14-120.zip,解压后将classes\org\bouncycastle\crypto下的.CLASS压成了.JAR的包,添加到classpath当中,但是仍然报
    java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA
    at javax.crypto.Cipher.getInstance(DashoA6275)
    请问大侠,我该怎么办?
    谢谢!
      

  4.   

    以下是我原来写的一个安装的文档!请参考! Bouncy Castle Crypto Package安装
    1、 将bcprov-jdk14-120.jar复制到D:\j2sdk1.4.1_03\jre\lib\ext目录和D:\Program Files\Java\j2re1.4.1_03\lib\ext目录,如果再不行,就将其再复制到ext的上级目录下。
    2、 将以上两个目录下的security子目录的java.security文件中增加security.provider.<n>=org.bouncycastle.jce.provider.BouncyCastleProvider,其中<n>根据前面几个提供者的序号递增,例如在j2sdk1.4.1_03中为6。
    3、 这样,在java程序中就可以使用RSA加密算法了。以下 摘自IBM开发者论坛的PublicExample.java程序,在没有安装成功Bouncy Castle提供者时运行提示错误如下:
    Exception in thread "main" java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/ECB/PKCS1Padding
            at javax.crypto.Cipher.getInstance(DashoA6275)
            at PublicExample.main(PublicExample.java:24)而在安装成功后就可以完好的执行。执行结果如下:
    E:\security>java PublicExample "This is a test,这是一个测试!this is a test!"
    Start generating RSA key
    Finish generating RSA key
    BouncyCastle Security Provider v1.19
    Start encryption
    Finish encryption:
    This is a test,这是一个测试!this is a test!源代码如下:
    import java.security.*;
    import javax.crypto.*;
    //
    // Public Key cryptography using the RSA algorithm.
    public class PublicExample {  public static void main (String[] args) throws Exception {
        //
        // check args and get plaintext
        if (args.length !=1) {
          System.err.println("Usage: java PublicExample text");
          System.exit(1);
        }
        byte[] plainText = args[0].getBytes("UTF8");
        //
        // generate an RSA key
        System.out.println( "\nStart generating RSA key" );
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(1024);
        KeyPair key = keyGen.generateKeyPair();
        System.out.println( "Finish generating RSA key" );
        //
        // get an RSA cipher object and print the provider   
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        System.out.println( "\n" + cipher.getProvider().getInfo() );
        //
        // encrypt the plaintext using the public key
        System.out.println( "\nStart encryption" );
        cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
        byte[] cipherText = cipher.doFinal(plainText);
        System.out.println( "Finish encryption: " );
        System.out.println( new String(cipherText, "UTF8") );
        //
        // decrypt the ciphertext using the private key
        System.out.println( "\nStart decryption" );
        cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
        byte[] newPlainText = cipher.doFinal(cipherText);
        System.out.println( "Finish decryption: " );
        System.out.println( new String(newPlainText, "UTF8") );
      }
    }
      

  5.   

    sun就有!第三方的bouncycastle也是!
    你得在java.security文件里面设置!
      

  6.   

    非常感谢 yannqi和flyycyu,我按照你的方法设置了我的jdk,但是很遗憾的是仍然没有成功,我用的是j2sdk1.4.1_01,应该没有什么问题吧。我不知道这是为什么,郁闷中。