Расшифруйте JWE, используя список ключей, которые хранятся в БД, используя JAVA 8 Lambda. - PullRequest
0 голосов
/ 22 марта 2019

У меня есть JWE, который должен быть расшифрован с использованием списка ключей, хранящихся в БД.Я должен пробовать каждый ключ, пока не найду тот, который на самом деле расшифровывает.

Я пытаюсь сделать это в JAVA 8 способом, писать Lambdas, но я не могу понять, как это сделать.

Я написал следующий код

List<String> listKeys = myMapper.getDistinctEncKeyIds().stream()                .map(MyMapper::encrypTionIdsfromDbData).collect(Collectors.toList());

Это дает мне список ключей, и я пишу обычный код Java

for(int i=0; i<listKeys.size();i++) {
            try {
                decryptedToken=  decrypt(token,listKeys.get(i));
            } catch(Exception e) {
                log.info("key not found: %s", e);
            }
        }

Я хочу преобразовать его в JAVA 8лямбда-код, потому что он занимает меньше строк и легче использовать что-то вроде этого

myMapper.getDistinctEncKeyIds().stream()
                .map(myMapper::encrypTionIdsfromDbData)
                .filter(key-> decrypt(token,key))
                .findFirst();

Но у меня есть две проблемы здесь

  1. Метод расшифровки фактически возвращает ключ, а фильтр принимаетметод, который возвращает логическое значение
  2. Метод расшифровки выдает JOSEException, снова я получаю сообщение об ошибке в фильтре, и мне нужно записать блок try / catch в лямбду

Моя цель найтиключ, который фактически расшифровывает этот токен и возвращает этот ключ.Я не понимаю, как написать это в Java 8. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...