Le chiffrement et le Déchiffrement avec X. 509 public certificat

Je veux crypter mon post de charge utile avec un X. 509 certificate et de l'héritage de la clé publique. Pour l'instant j'ai ce code java pour effectuer le chiffrement

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()));
}

qui retourne la chaîne encodée en base64. À partir de l'ordinateur d'extrémité, je suis toujours d'obtenir le résultat, que le certificat n'est pas valide.

Donc je veux valider ma chaîne cryptée sur la console à l'aide de la openssl de commande, mais ne pas le faire.

Je peux lire le certificat avec: 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)

Mais je ne peux pas comprendre les lignes de commande pour crypter/décrypter un fichier texte à l'aide de ce certificat

  • md5WithRSAEncryption et 4096 bits de la clé est un réel décalage. Peut-être vous devriez envisager de sha256WithRSAEncryption. MD5 a moins de 64-bits de sécurité restants, tout en 4096 bits module dispose de plus de 128 bits de sécurité. MD5 est cassé, et ne peut pas fournir la collision de la résistance au fil du temps.
  • ok je vais prendre que, pour l'examen. Je n'ai pas été celui de la création de la clé, plutôt que le consommateur qui a reçu la clé d'un tiers
  • Pourquoi? Pourquoi ne pas utiliser le protocole HTTPS comme tout le monde?
  • Et quelle chaîne cryptée. Si le certificat n'est pas valide, comment pouvez-vous peut-être obtenir un cryptage? Et où la trace de la pile pour que l'exception?
InformationsquelleAutor MatthiasLaug | 2014-02-14