2
sign.verify (서명)는 verifySignature 메소드에서 false를 반환합니다. 출력 스트림과 입력 스트림을 signedobject.obj 파일 (인증서 전달 유효성)과 함께 사용하는 방법과 관련이 있다고 생각합니다. 파일에서 메시지를 올바르게 읽을 수 있습니다.서명 된 파일을 읽은 후 서명을 확인할 수 없습니다.
코드 :
RSAPrivateKey pk = (RSAPrivateKey) ks.getKey("CS2", "fihjo".toCharArray());
Signature s = Signature.getInstance("SHA1withRSA");
s.initSign(pk);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
String message = "Hi Sign ME!!!";
oos.writeObject(message);
oos.writeObject(s.sign());
byte[] barr = baos.toByteArray();
s.update(barr);
FileOutputStream out1 = new FileOutputStream("signedobject.obj");
out1.write(barr);
//out1.write(s.sign());
out1.close();
verifySignature(ks);
verifySignature (키 스토어) 방법 :
당신은 메시지의 바이트 배열에 업데이트 후 기호를 호출해야FileInputStream fis = new FileInputStream("signedobject.obj");
ObjectInputStream ois = new ObjectInputStream(fis);
String message = (String)ois.readObject(); // read message
System.out.println("msg: "+message);
byte[] signature = (byte[])ois.readObject(); // read signature, hmmm
X509Certificate xcert = (X509Certificate) ks.getCertificate("CS1");
Signature sign = Signature.getInstance("SHA1withRSA");
sign.initVerify(xcert.getPublicKey());
sign.update(message.getBytes());
if (sign.verify(signature)) // This is where it fails!
System.out.println("It is validly signed. String: "+message);
else System.out.println("It isn't valid");