2017-02-04 9 views
-1

Я хотел был бы изменить изображение filename с зашифрованной строкой.2 way crypt image filename

мне нужно также:

  • криптовальным еще несколько раз, исходная строка с тем же паролем, будет возвращать ту же строку
  • Зашифрованная строка должна быть расшифрована (2 способа крипт)

Какой метод php я мог использовать? Я видел, что mcrypt не обновляется с многих лет, и openssl_crypt будет возвращать разные зашифрованные строки каждый раз, когда я зашифровываю (даже если пароль тот же).

Thanks

+0

[Почему?] (http://meta.stackexchange.com/questions/66377/what-is -the-xy-problem # 66378) – Sammitch

+0

@Sammitch для создания уникального имени файла на основе переменных params, переданных методу, который будет генерировать изображение (например, высота, ширина и т. д.). –

+1

Вы можете назвать файл как «myimage_200_400_stretched .jpg». Односторонний не аутентифицированный хеш, такой как sha256, также часто используется для кеширования файлов, большинство систем не нуждаются в двухстороннем доступе или аутентификации. –

ответ

0

openssl_encrypt & co должно быть хорошо. Пример:

<?php 
$data='foo.jpg'; 
$method='AES-192-CBC'; 
$password='ogiughjklpdeorivjrhfnd'; 
$iv=base64_encode(random_bytes(10)); 
$encrypted=array(); 
for($i=0;$i<10;++$i){ 
    $encrypted[]=openssl_encrypt($data,$method,$password,0,$iv); 
} 
$decrypted=openssl_decrypt ($encrypted[0] ,$method ,$password,0,$iv); 

var_dump($data,$encrypted[0],$decrypted,$data===$decrypted,$encrypted[2]===$encrypted[7],$encrypted); 

цитата openssl_crypt will return different encrypted strings each time I encrypt (even if the password is the same). - не с AES-192-CBC, до тех пор, как пароль и IV идентичны. Я думаю, именно поэтому IV был изобретен в первую очередь, чтобы предотвратить шифрование одних и тех же данных в той же зашифрованной форме.

+0

Технически вы предоставили решение, но повторное использование IV нарушает безопасность большинства систем. –

+0

@ ErikvanVelzen да, но я считаю, что правильное использование уникальных IVs принципиально несовместимо с требованием, чтобы «шифрование одних и тех же данных в два раза должно приводить к одному и тому же выпуску» - именно это означает, что IV должны предотвращать – hanshenrik

+0

Почему вы принимаете случайные байты, вещи, из которых сделаны IV, и base64's их? Почему вы используете AES-192?Как у вас такое фундаментальное непонимание того, что такое IV? – Sammitch

0

Следует использовать блок-шифр.

Я хотел бы предложить Zend \ Crypt \ BlockCipher или \ Натрий \ crypto_secretbox

Оба легко использовать правильно и иметь четкую документацию.

И openssl_crypt, возвращающий разные строки с одинаковыми данными, необходим для обеспечения безопасности. Оба метода выше будут делать то же самое.

+0

Спасибо @Erik, я попробую их –

+0

и ни один из ваших 3 предложения соответствуют требованиям при правильном использовании IV. Посмотрите на него, вам нужно повторно использовать IV на этом. – hanshenrik

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

  • Нет связанных вопросов^_^