2015-10-19 3 views
4

У меня есть веб-приложение Laravel5 в бизнес-каталоге.Limit Laravel 5 Длина шифрования

Когда я шифрованное значение как

$cryptval = Crypt::encrypt(1); 

result = eyJpdiI6IndhaFZFNlhIRDlURzdXanJVMEhBM0E9PSIsInZhbHVlIjoidWF3VzRFZDhyRHltUlwveDdyV0VVWnc9PSIsIm1hYyI6IjE5YjA2YWIyN2Q0MTBlYjdhNDJiNDE5ZjY2OGQ2MDA2NzQ3ZTA4ODc4NzY0ZTIwMjBiMzQxN2RjNmM5ZDg3ZjYifQ== 

его дает длинную строку около 250 длины.

Есть ли способ ограничить длину этой строки в laravel?

Моему клиенту необходимо добавить URL-адрес с зашифрованным значением в почтовую функцию. например: www.example.com/varify/eyJpdiI6IndhaFZFNlhIRDlURzdXanJVMEhBM0E9PSIsInZhbHVlIjoidWF3VzRFZDhyRHltUlwveDdyV0VVWnc9PSIsIm1hYyI6IjE5YjA2YWIyN2Q0MTBlYjdhNDJiNDE5ZjY2OGQ2MDA2NzQ3ZTA4ODc4NzY0ZTIwMjBiMzQxN2RjNmM5ZDg3ZjYifQ==

Но функция почты только позволяют некоторую длину URL :(

+0

Метод '' 'encrypt''' принимает только параметр' '' $ value''', поэтому нет возможности явно контролировать длину хэша. Зачем вам это нужно, чтобы быть короче? – Amo

+0

Зачем вам шифрование? – fico7489

+0

отредактировал вопрос –

ответ

2

Одним из решений является для хранения хэш-значения в таблице, а затем ссылаться на хэш от автоинкрементным ID значения хэш

| id | hash    | timestamp | random_key | 
| 1 | some-hash  | 125346164 | 21415  | 
| 2 | some-other-hash | 123513515 | 25151  | 

Так что теперь, вместо того, чтобы использовать:.

www.example.com/verify/some-hash 

Вы можете использовать:

www.example.com/verify/1 

id должны действительно быть запутанным, и не используется только как целое - что, где метка времени и random_key может помочь.

$id = 1; 
$timestamp = 125346164; 
$randomKey = 21415; 

$key = base64_encode($timestamp . $randomKey . $id); 

echo 'http://www.domain.com/verify/' . $key; 

// http://www.domain.com/verify/MTI1MzQ2MTY0MjE0MTUx 

Все, что было сказано, моя рекомендация будет пытаться обойти ограничение ввести в действие с помощью электронной почты платформы доставки, как URL's can support an address length of around 2000 characters. Пример, который вы только что дали, имел длину 32 и хорошо вписывался в длины, приемлемые для любого современного браузера.

Редактировать: Просто сгенерируйте uuid, используя пакет, например this, вместо того чтобы пытаться создать свой собственный случайный идентификатор. Это приведет к созданию строки, такой как d3d29d70-1d25-11e3-8591-034165a3a613.

+0

Это сделало бы чрезвычайно просто, чтобы кто-то догадался, тем самым сделав хэш избыточным. –

+0

Согласен, что это не идеально в формате примера. Он нуждается в дополнительном запутывании, чтобы быть полезным, что можно было бы сделать, добавив метку времени в '' 'id'''. Будет обновлен пример. – Amo

+0

Base64-кодирование числа как обфускации было бы программисту вроде ... Я не знаю. Написать чистый текст? Все знают о base64-кодировании, результирующем наборе символов и == отдаляет его большое время. – sisve

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