2011-12-13 7 views
0

서명 및 서명 된 데이터의 차이점은 무엇입니까? 나는 그들을 다른 편으로 보내야한다.자바 서명 및 서명 된 데이터

내가해야합니까 코드 :

private static byte[] sign(byte[] data) { 
    byte[] signedData = null; 

    try { 
     java.security.KeyStore keyStoreFile = java.security.KeyStore.getInstance("PKCS12"); 
     keyStoreFile.load(new FileInputStream("keyStore.pfx"), 
       "password".toCharArray()); 

     PrivateKey privateKey = (PrivateKey) keyStoreFile.getKey(
       "alias", "password".toCharArray()); 

     Signature dsa = Signature.getInstance("SHA1withRSA"); 
     dsa.initSign(privateKey); 
     dsa.update(data); 
     signedData = dsa.sign(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return signedData; 
} 

그래서 signedData가 서명 또는 서명 된 데이터입니까? 둘 다 생성하고 게시해야하지만 차이점을 이해할 수는 없습니다. 제발 조언. 감사. Signature.sign의 자바 독에서

답변

0

:

는 갱신 된 모든 데이터의 서명 바이트를 돌려줍니다. 서명의 형식은 기본 서명 체계에 따라 다릅니다.

따라서 이것은 서명 된 데이터가 아니고 update 메서드를 사용하여 제공된 데이터의 서명 일뿐입니다.

+0

감사합니다. gabuzo 님, 그럼 어떻게 데이터에 서명합니까? 코드 예제가 있습니까? 내가 보는 곳에서 나는 서명 만하는 방법을 찾는다. – innspiron

0

예제에서 data은 서명하려는 원본 데이터입니다. signedData이 서명 데이터입니다. 동일한 개인 키와 동일한 data을 사용하는 경우 항상 동일한 signedData을 얻을 수 있습니다.

datasignedData을 함께 묶어 본 결과 번들을 "서명 된 데이터"라고 부를 수 있습니다. 원본 데이터는 사용 가능하게하려는 것이며 서명 데이터는 본인 또는 다른 사람이 원본 데이터가 변경되지 않았 음을 확인할 수있는 방법입니다. 즉, 원본 데이터를 사용하려면 원본 데이터 만 필요합니다. 데이터가 변경되지 않았 음을 확인하려면 원본 데이터, 서명 데이터 및 공개 키가 필요합니다. 공개 키는 서명 데이터를 생성하는 데 사용 된 개인 키와 일치해야합니다.

확인 작업을 성공하려면 확인 소프트웨어가 원래 서명 작업이있었습니다. 따라서 원본 데이터와 서명 데이터를 함께 묶는 경우 데이터의 일부를 추가하거나 삭제하지 않도록주의해야합니다.

파일에 원본 데이터를 넣고 다른 파일에 서명 데이터를 넣고 zip 아카이브 또는 다른 종류의 아카이브를 만들 수 있습니다. 모두 Base64로 인코딩하여 구분 기호가있는 텍스트 파일에 둘 수 있습니다. 도대체 무엇이. 그러나 데이터의 최종 사용자는 원본 데이터, 서명 데이터 및 공개 키가 있어야 원래 데이터가 올바른지 확인할 수 있습니다.

관련 문제