2017-02-04 10 views
-1

나는 암호화 된 문자열로 이미지 파일 이름을 변경하고 싶습니다.양방향 암호화 된 이미지 파일 이름

내가 또한 필요

  • 이 동일한 암호를 사용하여 원래 문자열보다 여러 시간을 암호화 등, 같은 문자열 암호화 된 문자열을 해독해야
  • (2 방식의 토굴)
를 반환합니다

어떤 PHP 메소드를 사용할 수 있습니까? mcrypt는 수년간 업데이트되지 않았으며 openssl_crypt는 암호가 같을지라도 암호화 할 때마다 다른 암호화 된 문자열을 반환합니다.

감사합니다.

+0

[이유?] (http://meta.stackexchange.com/questions/66377/what-is) -the-xy-problem # 66378) – Sammitch

+0

이미지를 생성 할 메소드에 전달 된 변수 params (높이, 너비 등)를 기반으로 고유 한 파일 이름을 만들기 위해 @Sammitch –

+1

"myimage_200_400_stretched .jpg ". sha256과 같은 일방적 인 인증되지 않은 해시는 파일 캐싱에도 주로 사용되며 대부분의 시스템에는 양방향 인증이나 인증이 필요하지 않습니다. –

답변

0

openssl_encrypt & 공동해야합니다. 예 :

<?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-CBC-192,만큼 암호 AND IV와 동일하다. 나는 IV가 처음부터 동일한 데이터가 정확히 동일한 암호화 된 형식으로 암호화되지 않도록하기 위해 발명 된 이유라고 생각합니다.

+0

기술적으로는 솔루션을 제공했지만 IV를 재사용하면 대부분의 시스템의 보안이 깨졌습니다. –

+0

@ErikvanVelzen 그래,하지만 고유 IV의 적절한 사용은 기본적으로 '똑같은 데이터를 두 번 암호화하면 똑같은 출력이 나옵니다'라는 요구 사항과 근본적으로 양립 할 수 없다고 생각합니다. 정확히 IV가 예방해야하는 것입니다 – hanshenrik

+0

왜 복용하고 있습니까? 임의 바이트, IV가 만들어지는 것들, 그리고 그들을 base64'ing? 왜 AES-192를 사용하고 있습니까?IV가 무엇인지에 대한 근본적인 오해가 무엇입니까? – Sammitch

0

블록 암호를 사용해야합니다.

나는

가 모두 올바르게 사용하기 쉽고 명확한 문서가 젠드 \ 크립트 \ BlockCipher 또는 \ 나트륨 \이 crypto_secretbox 좋을 것.

openssl_crypt는 보안을 위해 동일한 데이터가있는 다른 문자열을 반환해야합니다. 위의 두 가지 방법 모두 동일하게 적용됩니다.

+0

감사합니다 @Erik, 나는 그들을 시도 할 것입니다 –

+0

그리고 아무도 당신의 3 제안은 IV를 올바르게 사용하여 요구 사항을 충족시킵니다. 그것을 직면하면, 이것에 IV를 다시 사용해야합니다. – hanshenrik