2015-05-25 3 views
2

Просто быстрый вопрос, если я использую функцию Laravel 5 Crypt::encrypt(), и я хотел бы сохранить ее в базе данных, сколько символов я ожидаю? Длина символа зависит от длины моего сообщения или от фиксированной длины?Длина символов, ожидаемая в Laravel 5 Функция Crypt

В настоящее время я использую varchar 255 в моей базе данных и время от времени здесь отсутствуют символы, что вызывает проблемы при расшифровке.

Спасибо

ответ

6

Из официальной документации Laravel:

Laravel предоставляет средства для надежного шифрования AES с помощью расширения PHP Mcrypt .

Из официальной документации PHP с использованием mcrypt_generic.

Если вы хотите сохранить зашифрованные данные в базе данных убедитесь, что магазин всей строки, возвращаемая mcrypt_generic или строка не будет полностью расшифровать должным образом. Если ваша исходная строка содержит 10 символов длиной, а размер блока равен 8 (используйте mcrypt_enc_get_block_size(), чтобы определить размер блока), вам нужно было бы указать в поле вашей базы данных. Обратите внимание, что строка , возвращаемая mdecrypt_generic(), также будет 16 символов ... используйте rtrim ($ str, "\ 0"), чтобы удалить дополнение.

Больше here

Так что я думаю, правильный ответ, что размер символов, созданных функция ENCRYPT зависит от размера текста, который вы разбор через функцию зашифровать.

Предполагая, что вы используете MySQL, почему бы вам просто не использовать ТЕКСТ, если вы разбираете много информации? Дополнительная информация о типах полей MySQL here

0

Ответ трудно определить, поскольку он зависит от вашего размера ввода. Но даже фиксированный размер ввода дает разный размер.

Я создал простой скрипт для проверки размеров реального мира для разных длин строк.

Here is the GitHub gist

Вот пример вывода:

Testing Laravel Crypt::encrypt() result length 
Number of passes: 1000000 
Minimum input length: 1 
Maximum input length: 32 
Input length: 1 - Output length 188 - 200 
Input length: 2 - Output length 188 - 200 
Input length: 3 - Output length 188 - 200 
Input length: 4 - Output length 188 - 200 
Input length: 5 - Output length 188 - 200 
Input length: 6 - Output length 188 - 200 
Input length: 7 - Output length 188 - 200 
Input length: 8 - Output length 188 - 200 
Input length: 9 - Output length 216 - 228 
Input length: 10 - Output length 216 - 228 
Input length: 11 - Output length 216 - 228 
Input length: 12 - Output length 216 - 228 
Input length: 13 - Output length 216 - 228 
Input length: 14 - Output length 216 - 228 
Input length: 15 - Output length 216 - 228 
Input length: 16 - Output length 216 - 228 
Input length: 17 - Output length 216 - 228 
Input length: 18 - Output length 216 - 228 
Input length: 19 - Output length 216 - 228 
Input length: 20 - Output length 216 - 228 
Input length: 21 - Output length 216 - 228 
Input length: 22 - Output length 216 - 228 
Input length: 23 - Output length 216 - 228 
Input length: 24 - Output length 244 - 256 
Input length: 25 - Output length 244 - 256 
Input length: 26 - Output length 244 - 256 
Input length: 27 - Output length 244 - 256 
Input length: 28 - Output length 244 - 256 
Input length: 29 - Output length 244 - 256 
Input length: 30 - Output length 244 - 256 
Input length: 31 - Output length 244 - 256 
Input length: 32 - Output length 244 - 256 

Примечание - если вы используете это самостоятельно, вам необходимо установить его около 1 млн проходами на длину строки, чтобы получить фактический орешек мин и макс. В моем тестировании было недостаточно 500 000. Кроме того, функция get_random_input выводит максимум 32 символа, поэтому ее нужно будет изменить, чтобы протестировать более длинные строки.

1

Выходные данные зависят от размера ввода, поэтому безопаснее использовать тип данных TEXT для столбца вместо VARCHAR. Чтобы проверить это, возьмите самую большую строку в столбце db и запустите ее через функцию encrypt(), чтобы увидеть, насколько велика результирующая строка.Обратите внимание, что если вы применяете ограничение длины для сырого текста (до шифрования), вы можете избежать использования VARCHAR.

Смежные вопросы