1. Java / Говнокод #20104

    −26

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    public String encrypt(String str) {
        try {
            CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
            ClassPathResource cpr = new ClassPathResource("beeline_cert.cer");
            FileInputStream certFile = new FileInputStream(cpr.getFile());
            java.security.cert.Certificate certificate = certificateFactory.generateCertificate(certFile);
            certFile.close();
            ecipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            ecipher.init(Cipher.ENCRYPT_MODE, certificate);
            // Encode the string into bytes using utf-8
            byte[] utf8 = str.getBytes("UTF8");
            // Encrypt
            byte[] enc = ecipher.doFinal(utf8);
    
            // Encode bytes to base64 to get a string
            logger.debug("Base64.encodeBase64URLSafeString " + Base64.encodeBase64URLSafeString(enc));
            return Base64.encodeBase64URLSafeString(enc);
        } catch (FileNotFoundException e) {
            logger.error("FileNotFoundException", e);
        } catch (CertificateException e) {
            logger.error("CertificateException", e);
        } catch (NoSuchAlgorithmException e) {
            logger.error("NoSuchAlgorithmException", e);
        } catch (NoSuchPaddingException e) {
            logger.error("NoSuchPaddingException", e);
        } catch (BadPaddingException e) {
            logger.error("BadPaddingException", e);
        } catch (IllegalBlockSizeException e) {
            logger.error("IllegalBlockSizeException", e);
        } catch (InvalidKeyException e) {
            logger.error("InvalidKeyException", e);
        } catch (IOException e) {
            logger.error("IOException", e);
        }
    
        return null;
    }

    Нашел такой кладезь в одном из legacy-проектов. Книжку можно писать с таких примеров.

    Запостил: morph, 31 Мая 2016

    Комментарии (7) RSS

    • Переходи на Го, там все гораздо проще:
      certificateFactory, err := CertificateFactory.getInstance("X.509");
      if err != nil {
          return errors.Wrap(err, 0)
      }
      cpr, err := new ClassPathResource("beeline_cert.cer");
      if err != nil {
          return errors.Wrap(err, 0)
      }
      FileInputStream certFile = new FileInputStream(cpr.getFile());
      if err != nil {
          return errors.Wrap(err, 0)
      }
      certificate, err := certificateFactory.generateCertificate(certFile);
      if err != nil {
          return errors.Wrap(err, 0)
      }
      err = certFile.close();
      if err != nil {
          return errors.Wrap(err, 0)
      }
      ecipher, err := Cipher.getInstance("RSA/ECB/PKCS1Padding");
      if err != nil {
          return errors.Wrap(err, 0)
      }
      err = ecipher.init(Cipher.ENCRYPT_MODE, certificate);
      if err != nil {
          return errors.Wrap(err, 0)
      }
      // Encode the string into bytes using utf-8
      utf8, err := str.getBytes("UTF8");
      if err != nil {
          return errors.Wrap(err, 0)
      }
      // Encrypt
      enc, err := ecipher.doFinal(utf8);
      if err != nil {
          return errors.Wrap(err, 0)
      }
      Ответить
      • В го нету исключений?
        Ответить
        • Про Го лучше спрашивать "что там есть", а не "чего там нету". Большинства полезных вещей там нету. Это компенсируется фигурными скобочками и фанбойством орущим "нинужно".
          Ответить
          • Там даже гейских скобочек нет. Особенно забавно в этом свете смотрятся го-фанбои, которые раньше хаяли питон за индентацию.
            Ответить
      • А у них нету макроса try! как в расте?
        Ответить
        • В Го нету макро, вообще. Го был придумал людьми, которые уже один раз придумали язык для страдания и превозмогания. Но тут они начали замечать, что потихоньку бывшие адепты страданий и превозмоганий уползают кто куда, и придумали новую замануху. Не любят страдать в одиночестве.
          Ответить
          • Ждем очередного сумрачного гения и го++
            Ответить

    Добавить комментарий