2017-02-21 6 views
2

При использовании Javax.crypto шифров (более конкретных AES128/CBC/PKCS5Padding), то doFinal бросает NullPointerException при прохождении null к нему как метод арг.шифрованная NULL

Есть ли способ шифрования null так, что при сохраняющемся в базу данных, я не храню null, как null или что-то подобное?

+0

Я предполагаю, что метод ожидает фактический объект, а не «ничего» ... – SEJPM

+2

Зашифровал бы байтовый массив нулевой длины, удовлетворяющий вашему требованию? или вам нужно различать пустое и пустое? – EJP

ответ

4

Нет, вы не можете шифровать NULL ... для шифрования требуется входное значение (которое NULL не является). Если вы абсолютно должны хранить зашифрованное значение в своей базе данных, вы можете проверить, является ли зашифрованное значение NULL и отличает его до репрезентативного значения (пустая строка, 0, независимо от ваших предпочтений), а при расшифровке выполняют аналогичную проверку для этого значения , и вернемся к NULL. Однако, на мой взгляд, это хаки, и его следует избегать - лучше вообще не хранить какую-либо ценность, но я не знаю ваших обстоятельств.

0

Перед тем, как пытаться зашифровать, проверьте нуль. Если он равен нулю, не шифруйте его. Аналогично для дешифрования.

+0

Это не удовлетворяет 'при сохранении его в базе данных, я не храню 'null' как' null'. – EJP

+0

Это хороший момент, EJP. Я бы посоветовал OP пересмотреть, не сохраняя в NULL значения null в базе данных. –

+0

Ну, это может не удовлетворить его требование. У него может быть требование скрывать, является ли столбец нулевым. – EJP