• Страница:
  • 1
  • 2

ТЕМА: Подписание pdf, JAVA

Re: Подписание pdf, JAVA 1 год, 4 мес. назад #3848

  • urmnurbo
  • Осваиваюсь на форуме
  • Постов: 26
  • Репутация: 0
Есть вопрос, как мы можем проверит что контент подписанного документа и оригинальный документ одинаковы. То есть:

[ul]
  • Есть документ CMSSignedData который закодирован в Base64:

  • [code]
    InputStream dataLoaded = this.getClass().getResourceAsStream("/testtext.pdf");
    byte[] data = dataLoaded.toString().getBytes();
    Signature sig = Signature.getInstance(certToCheck.getSigAlgName(), provider); // Load signature
    KeyFactory keyFact = KeyFactory.getInstance(certToCheck.getPublicKey().getAlgorithm(), provider);
    PrivateKey privateKey;
    sig.initSign(privateKey);
    sig.update(data);
    [b]CMSProcessableByteArray cmsData = new CMSProcessableByteArray(data);
    CMSSignedData signed = gen.generate(cmsData, true, provider.getName());

    FileOutputStream fileOuputStream = new FileOutputStream("C:\\Test\\test_3.txt");
    byte[] signedDataEncoded = signed.getEncoded();
    fileOuputStream.write(Base64.encode(signedDataEncoded));
    [/b]
    [/code
    [li] и есть просто оригинальный файл в pdf[/li]
    [/ul]

    Понял что хэш файл всегда разный, если подписывать один и тот же документ несколько раз. Так как там есть информация о времени подписания файла и какая та информация:

    [spoiler] SEQUENCE {
    OBJECTIDENTIFIER 1.2.840.113549.1.1.11 (sha256WithRSAEncryption)
    NULL
    }
    OCTETSTRING cc8d574664a6981e34db20cc92d90567f9e895af5e46ceef8be505d35826f080ead9e0dce6ba77594945fb750d0577900fb6760f047ecedb907c893d7dc5570c3f8d99153dc32ab36a7ac3675034e3d52c1b2e2d044b2e7e46212bc018cf8e5e6f834929d5d7b64f8d64175d91921231f49b400f335d63d0e8c2e88c5fec6b4e59af8c49e8332dcedd786302a8f06ff54bc95c7385afdbf40469a467da09a6d976888a1cc37290904845b469ce376ed9c3641e3db5d9dc6de407edc6abd89757f0c75770582807ce483cd951198c5b63ca5ed4db38bdd4f5d51effbfbdce3d23bc43da2b1d73bd1c19f0d0f0e850c256a4f0e1db96579065a3ef9089eaee7aac[/spoiler]

    Но как именно проверить что хэш подписанного контента и сам оригинальный контент идентичен?

    www.pki.gov.kz/index.php/ru/forum/7-dlya...odpisanie-fajla-java
    тут я пытался декодировать base64 to asn1.

    Re: Подписание pdf, JAVA 1 год, 4 мес. назад #3849

    • Murat Seisenov
    • Модератор
    • Постов: 391
    • Репутация: 19
    Но как именно проверить что хэш подписанного контента и сам оригинальный контент идентичен?

    Проверить подпись! метод verify(). Посмотрите в примерах.
    Если в исходном файле что-то изменилось, то подпись не проверится.
    Модератор

    Re: Подписание pdf, JAVA 1 год, 4 мес. назад #3851

    • urmnurbo
    • Осваиваюсь на форуме
    • Постов: 26
    • Репутация: 0
    CMSSignedData cms = new CMSSignedData(Base64.decode(envelopedData.getBytes()));
    Store store = cms.getCertificates(String type, provider.getName()); 


    В bouncycastle метод getCertificates() не применяет никаких аргументов. Но в
    kalkan  .CMSSignedData.getCertificates(String type, String provider)


    Что за тип я должен именно указать? RSA?

    cms.getCertificates("RSA", provider.getName());

    Re: Подписание pdf, JAVA 1 год, 4 мес. назад #3852

    • margulan
    • Модератор
    • Постов: 166
    • Репутация: 12
    Тип - строка "Collection"

    Re: Подписание pdf, JAVA 1 год, 4 мес. назад #3853

    • urmnurbo
    • Осваиваюсь на форуме
    • Постов: 26
    • Репутация: 0
    Спасибо за ответ.

    1. Как я понял это проверка самого CMSSignedData файла.
    Если изменить этот файл (хэш), то выходит ошибка. Правильно?

    2. Но у меня другой вопрос. У меня есть test.pdf, я его подписываю и получаю test.txt(где хэшированный файл). Если я могу проверит сам test.txt методом verify, то как я могу проверит что test.pdf и test.txt это именно один и тот же файл и что контент файла test.pdf и подписано test.txt идентичны.

    Это проверка нужна для того чтобы при суде доказать что о подписал именно этот test.pdf и он не был изменен после подписания.

    Re: Подписание pdf, JAVA 1 год, 4 мес. назад #3854

    • Murat Seisenov
    • Модератор
    • Постов: 391
    • Репутация: 19
    Прочитайте материал, рекомендованный в этой теме.
    Модератор
    • Страница:
    • 1
    • 2
    FaLang translation system by Faboba