Детерминированный TextEncryptorJAVA

Программисты JAVA общаются здесь
Anonymous
Детерминированный TextEncryptor

Сообщение Anonymous »

Я хочу, чтобы этот шифратор возвращал одно и то же значение для одного и того же ввода. Это имеет смысл для номеров карт. В противном случае вы не сможете применить ограничение UNIQUE (и потеряете возможность выбирать карту по ее номеру).

Код: Выделить всё

    // before persisting
encryptor.encrypt(cardNumber);

Код: Выделить всё

    // before returning card response DTO (masking omitted)
encryptor.decrypt(encryptedCardNumber);
К сожалению, этого не происходит.

Код: Выделить всё

import com.example.em_card_service.data.properties.EncryptionProperties;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.encrypt.Encryptors;
import org.springframework.security.crypto.encrypt.TextEncryptor;

import java.util.List;

@Configuration
@RequiredArgsConstructor
public class SecurityConfig {

private final EncryptionProperties encryptionProperties;

// more beans

@Bean
public TextEncryptor textEncryptor() {
return Encryptors.text(encryptionProperties.getPassword(), encryptionProperties.getSalt());
}
}
Мне совершенно не хочется увязнуть в вопросах шифрования. Мне нужен волшебный API с encrypt()/

Код: Выделить всё

decrypt() методы. Я согласен предоставить этой утилите некоторые шестнадцатеричные строки («соли», «пароли», что угодно).
После разговоров с Клодом, в конечном итоге она сказала: "Исправление состоит в том, чтобы использовать javax.crypto
напрямую". Не в моей повестке дня.
Как детерминированно зашифровать строки на нескольких серверах, используя только высокоуровневые средства (без шифрования)? Вы можете использовать любую библиотеку, которая вам нравится.
Spring Boot 4.

Вернуться в «JAVA»