Спасибо
Есть теперь другой вопрос. Вот код который сохраняет hash-value в txt формате:
gen.addSigner(privateKey, certToCheck, CMSSignedDataGenerator.DIGEST_SHA256);
CMSSignedData signed = gen.generate(cmsData, false, provider.getName());
FileOutputStream fileOuputStream = new FileOutputStream("C:\\Test\\test_4.txt");
byte[] signedDataEncoded = signed.getEncoded();
fileOuputStream.write(Base64.encode(signedDataEncoded));
Кодирую тот же самый файл и тем же ключом, но у меня каждый раз hash-value разные. То есть не польностью совпадает:
text_2:
MIICtgYJKoZIhvcNAQcCoIICpzCCAqMCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwExggJ+MIICegIBATCB5zCBzjELMAkGA1UEBhMCS1oxFTATBgNVBAcMDNCQ0KHQotCQ0J3QkDEVMBMGA1UECAwM0JDQodCi0JDQndCQMUwwSgYDVQQKDEPQoNCc0JogwqvQnNCV0JzQm9CV0JrQldCi0KLQhtCaINCi0JXQpdCd0JjQmtCQ0JvQq9KaINKa0KvQl9Cc0JXQosK7MUMwQQYDVQQDDDrSsNCb0KLQotCr0pog0JrQo9OY0JvQkNCd0JTQq9Cg0KPQqNCrINCe0KDQotCQ0JvQq9KaIChSU0EpAhRrOFqUOts9poIlyoTTKe32NeZRnjANBglghkgBZQMEAgEFAKBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE4MDMyODAzMjc0NVowLwYJKoZIhvcNAQkEMSIEIG9Jb8/kZ5nWXQHn7+MmNOGQJ9uDlw9UjlNYI02OkMy8MA0GCSqGSIb3DQEBCwUABIIBALmmaXWdheWZ//1OxDEAyidVdD5bgZuzfKhoXuBk6Sr9Qn42yWIa62OY4SRXoxHF/veJmER9FT1ravVCrV/p4Y5wzPyq/sciGOwE2+BBLVXcQDIfr/oRFvCF6YQyOSdIOIztuNRticpRTHeoigynrOBJUwp0oYDu5OMEdMyFUzMHJBNGqFeuiOU+dcg8to4i6kXz5EsiMmFi434fIZZfzQnmMvh7RLc57LQe0Z2cid0Xu1V3L8OMwzoKyI0QY032GC96PueLoI4rS13mroXjXKJX2eUMkJH0D9/RGYZ7u0wQajISKQzmjEiso5Pw5siLtBwI4nZzKEjZq+HI4TLzlBI=
text_3:
MIICtgYJKoZIhvcNAQcCoIICpzCCAqMCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwExggJ+MIICegIBATCB5zCBzjELMAkGA1UEBhMCS1oxFTATBgNVBAcMDNCQ0KHQotCQ0J3QkDEVMBMGA1UECAwM0JDQodCi0JDQndCQMUwwSgYDVQQKDEPQoNCc0JogwqvQnNCV0JzQm9CV0JrQldCi0KLQhtCaINCi0JXQpdCd0JjQmtCQ0JvQq9KaINKa0KvQl9Cc0JXQosK7MUMwQQYDVQQDDDrSsNCb0KLQotCr0pog0JrQo9OY0JvQkNCd0JTQq9Cg0KPQqNCrINCe0KDQotCQ0JvQq9KaIChSU0EpAhRrOFqUOts9poIlyoTTKe32NeZRnjANBglghkgBZQMEAgEFAKBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE4MDMyODAzMjgwNVowLwYJKoZIhvcNAQkEMSIEIG9Jb8/kZ5nWXQHn7+MmNOGQJ9uDlw9UjlNYI02OkMy8MA0GCSqGSIb3DQEBCwUABIIBANE5JSzmVo0q1+A/BiH6Q9ShE8nmcThy8KX5W5eYkhM0wyGIrOsDey7M1qb+htvzHfAnf+rwJjfLCaWbr5sxCvSkmIW4+qpA68dM7QNM6CjrigC9lXnzPuwyWavR3YNJPyV++z2vzD/dJZ1wt+LE1wBqP0w43n0Cn46cBhJzy/TgUY9Oo3sTslEHwjhrUWIK0IHYMFLUYGhlOLR8jHMbJjqcU+ttxfLn0E9ESPqoCiic/RAEo2Mta3ObImgeqO0TVSoZH1PTJz14QecR/AwWwoSg2zYEiIByrYQA2V2UImOh17I5RH60nHAr38nGeVHrvD/TuFfDaz3HZEEcETIPifQ=
Проверял даже по коду, все равно не совпадает:
byte[] f1 = Files.readAllBytes(Paths.get("C:\\Test\\test_2.txt"));
byte[] f2 = Files.readAllBytes(Paths.get("C:\\Test\\test_3.txt"));
if(Base64.decode(f1).equals(Base64.decode(f2))) {
System.out.println("Hash value is equal");
}
else {
System.out.println("Hash value is NOT equal");
}
В чем может быть проблема? По сути они же должны быть одинаковым, если хэшировать один файл с тем же ключом два или три раза.