2016-07-20 27 views
0

Ich schreibe Code, der digitale Signatur für eine bestimmte Datei anwenden würde. Ich habe .crt-Datei und ich muss KeyStore-Instanz erstellen, die diese Datei verwendet. Die Methode, die ich verwenden möchte, ist wie folgt:KeyStore.builder - Typ Parameter für .crt Dateien

Builder newInstance(String **type**, Provider provider, 
       File file, ProtectionParameter protection) 

aber ich bin nicht sicher, was ‚Typ‘ soll ich angeben Wenn ich .crt-Datei verwenden, es passieren kann, dass ich nicht versteht etwas, da dies mein erstes Mal, wenn ich mit digitalen Signaturen umgehen, mich nicht in diesem Fall beurteilen :-)

Danke, prost

+0

Möchten Sie eine Signatur verifizieren? oder unterschreiben? –

+0

@MuhammadHamed Ich möchte ein Dokument mit dieser .crt-Datei signieren, sorry für die Frage, das ist mein erstes Mal, wenn ich mit Signaturen oder Kryptographie klarkomme –

+0

Was weis ich weiter, dass man die pfx oder PKCS # 12 Zertifikatsspeicher nutzen kann Zeichen, das mit .pfx oder .p12 kommt. Der Signiervorgang erfordert einen privaten Schlüssel. Haben Sie die Schlüsselpaare für dieses Zertifikat? –

Antwort

1

Sie können zunächst die JKS bauen (Java-Schlüsselspeicherdatei und es verwenden,) mit dem privaten Schlüssel (.pem) und dem Zertifikat (.crt)

Check diese Antwort Importing the private-key/public-certificate pair in the Java KeyStore

dann Sie diese Schlüsselspeicher zu unterschreiben können, ist hier, wie die neue laden erstellen Java-Schlüsselspeicherdatei

KeyStore keystore = KeyStore.getInstance(TYPE_OF_KEYSTORE); 
keystore.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD); 

und hier ist ein Beispiel digital signieren und verifizieren

      PrivateKey oPrivateKey = (PrivateKey) keystore.getKey(sAlias,null); 


          Provider p = keystore.getProvider(); 
          // data to signed 
          byte[] data ="this is the just for test".getBytes(); 
          // Signing the data 
          Signature sig = Signature.getInstance("SHA1withRSA"); 
          sig.initSign(oPrivateKey); 

          sig.update(data); 
          byte[] signature = sig.sign(); // the digital signature 

          Signature verifier = Signature.getInstance("SHA1withRSA", p); 
          verifier.initVerify(oPublicCertificate); 
          verifier.update(data); 
          System.out.println("the verification result "+verifier.verify(signature)); 

http://muhammadhamed.blogspot.com/2010/04/accessing-ms-certificate-stores-in-java.html

Ich hoffe, das könnte helfen!

+0

Vielen Dank –