/ / Шифроване и декриптиране с публичен сертификат X.509 - java, shell, ssl, encryption, openssl

Шифроване и декриптиране с публичен сертификат X.509 - java, shell, ssl, криптиране, openssl

Искам да шифрирам моята поща с X.509 сертификат и наследения публичен ключ. Досега имам този java код, за да извърша криптирането

private String encrypt(String str) throws Exception {
ClassPathResource classPathResource = new ClassPathResource("testcert1.crt");
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)certificateFactory.generateCertificate(classPathResource.getInputStream());
PublicKey pk = certificate.getPublicKey();
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
cipher.init(Cipher.ENCRYPT_MODE, pk);
return Base64.encodeBase64String(cipher.doFinal(str.getBytes()));
}

който връща низ кодирания base64. От крайната точка винаги получавам резултата, че сертификатът не е валиден.

Така че искам да потвърдя моя криптиран низ на конзолата, като използвам openssl заповядвам, но не го прави.

Мога да прочета сертификата с: openssl x509 -in testcert1.crt -text -noout

Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=xxx, ST=xxx, L=xxx, O=xxx, OU=xxx, CN=xxx
Validity
Not Before: Jul 24 11:40:39 2013 GMT
Not After : Jul 24 11:40:39 2015 GMT
Subject: C=xxx, ST=xxx, L=xxx, O=xxx, OU=xxx, CN=xxx
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (4096 bit)
Modulus (4096 bit):
....
Exponent: 65537 (0x10001)

Но не мога да разбера командните редове за шифроване / декриптиране на текстов файл, използвайки този сертификат

Отговори:

1 за отговор № 1

Можете да валидирате шифрования низ с помощта на openssl със следната команда:

echo -n "string to encrypt" | openssl rsautl -encrypt -certin -inkey testcert1.crt | base64

-2 за отговор № 2

Като използвате асиметрична криптография, ако стеда шифровате с публичния ключ на сертификата си, можете да дешифрирате само чрез съответния личен ключ. Уверете се, че имате този ключ и го използвайте за дешифриране.