2012-12-05 27 views
23

JAVA'da bazı şifreleme teknikleri kullanan bir swing tabanlı uygulama oluşturuyorum.JCE java swing uygulamasında BC sağlayıcısını doğrulayamıyor

java.security.NoSuchProviderException: JCE cannot authenticate the provider BC 
     at javax.crypto.SunJCE_b.a(DashoA13*..) 
     at javax.crypto.KeyGenerator.getInstance(DashoA13*..) 

Yani sorun nedir: Ama ("AES", "BC") javax.crypto.KeyGenerator.getInstance istisna verir?

+8

Bu içinde

java.lang.SecurityException: JCE cannot authenticate the provider SC 

fazla bilgi genellikle sınıfları/kavanoz ve/veya sınıf yolunda paketlenmesi ile yanlış bir şey yaptık demektir. BC sınıflarını kavanozlarından çıkaramaz ve başka bir kavanoza koyamazsınız. –

cevap

25

GregS'ten gelen yorumu genişletmek için, tüm JCE sağlayıcısı JAR'ları, Java çalışma zamanınız tarafından güvenilmeden önce imzalanmalıdır.

BouncyCastle, sorunsuz bir şekilde çalışacak, imzalı JAR'leri sağlar. Ancak, bu JAR'dan sınıf dosyaları çıkarırsanız veya kaynağı yeniden derlerseniz, imzayı kaldıracak ve Java'nın kodu reddetmesine neden olacaktır. How to sign a custom JCE security provider

+7

Kavanoz dosyasını ayıklamam ya da yeniden derlemedim, sadece bcprov-jdk14 ve bcpkix-jdk14 'i http://repo2.maven.org/maven2/org/bouncycastle/ adresinden yükledim; Ancak, benim için çalışmıyor! –

23

1. düzenlemek jre \ lib \ güvenlik \ java.security

eklemek security.provider.10 = org.bouncycastle.jce.provider.BouncyCastleProvider

:

bu ilgili SO soruya bakın

2. * bc kopya .jar için jre \ lib \ ext olanlar bu sorunu bulma ama aslında SpongyCastle kullanarak, bu ilginç olabilir için

+0

Bu öneri neden reddedildi? Bu bana yardımcı oldu: http://stackoverflow.com/questions/27168951/jce-cannot-authenticate-the-provider-bc-when-running-a-jar – Anton

+0

Bu bana yardımcı olan tek şeydi. –

+1

Bu benim için harika çalıştı! Ben jar dosyaları doğrudan belirtilmiş olsa bile (ayrı ayrı sınıf dosyaları ayıklamamış olsa) jython kullanıyordum, belirtilen istisna var. Muhtemelen jython bunu çıkarır. Harika çözüm. Teşekkürler! – rsmoorthy

3

Android'de olduğunu bilmek Böyle bir imza testi yoktur ve testleriniz için SpongyCastle'ı openJDK-8 üzerinden de imzalamayan imzaları kullanamazsınız. Başvuru için

, SpongyCastle ile hata okur: this issue