-1

私のコードは

import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class apiKeyGenerate {
  public static void main(String[] args) throws Exception {
   // Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

    byte[] input = "input".getBytes();
    byte[] ivBytes = "1234567812345678".getBytes();

    Cipher cipher =  Cipher.getInstance("DES/CBC/PKCS5Padding");
    KeyGenerator generator = KeyGenerator.getInstance("AES", "BC");
    generator.init(128);
    Key encryptionKey = generator.generateKey();
    System.out.println("key : " + new String(encryptionKey.getEncoded()));
   }
}

上記のコードで発生する例外は次のとおりです: - java.security.NoSuchProviderException: つまり

Exception in thread "main" java.security.NoSuchProviderException: no such provider: BC
    at sun.security.jca.GetInstance.getService(Unknown Source)
    at javax.crypto.SunJCE_b.a(DashoA13*..)
    at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
    at apiKeyGenerate.main(apiKeyGenerate.java:17)

どうやってやるの ??前もって感謝します

4

2 に答える 2

1

ラインで

KeyGenerator generator = KeyGenerator.getInstance("AES", "BC");

これBCは BouncyCastle を示しますか? なぜコメントアウトしたのSecurity.addProvider( new BouncyCastleProvider() )ですか?policy次に、そのプロバイダーを Java セキュリティ ファイルに追加する必要があります。

getInstance JavaDocを見てください。これNoSuchProviderExceptionは、プロバイダーが構成されていないときに正確にスローされます。getInstance(...)provider 引数なしでメソッドを試しましたか?

乾杯、

于 2012-10-16T11:58:08.197 に答える
0
import java.security.Key;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class Test1 {
  public static void main(String[] args) throws Exception {
   // Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

      byte[] input = "input".getBytes();
        byte[] ivBytes = "1234567812345678".getBytes();

        Cipher cipher =  Cipher.getInstance("DES/CBC/PKCS5Padding");
        **KeyGenerator generator = KeyGenerator.getInstance("AES");**
        generator.init(128);
        Key encryptionKey = generator.generateKey();
        System.out.println("key : " + new String(encryptionKey.getEncoded()));
       }

}

それ以外の

KeyGenerator generator = KeyGenerator.getInstance("AES", "BC");

この行を試すことができます

KeyGenerator generator = KeyGenerator.getInstance("AES");

これはうまくいくと思います。

于 2012-10-16T12:04:25.590 に答える