프로젝트에서 암호를 사용하고 있으며 openssl_encrypt
과 openssl_decrypt
으로 작업하는 방법에 대한 약간의 도움이 필요합니다. 가장 기본적인 방법을 알고 싶습니다. 여기에 지금까지 무엇을 가지고 있습니다 : 다음 사용 $cypherMethod
, $key
및 $iv
이 $encryptedData
를 해독 할 때 저장올바른 방법은 PHP openssl_encrypt를 사용하는 것입니다.
// To encrypt a string
$dataToEncrypt = 'Hello World';
$cypherMethod = 'AES-256-CBC';
$key = random_bytes(32);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cypherMethod));
$encryptedData = openssl_encrypt($dataToEncrypt, $cypherMethod, $key, $options=0, $iv);
. (의 내가 값을 저장하는 방법을 자세히 설명하지 감사하자!)
// To decrypt an encrypted string
$decryptedData = openssl_decrypt($encryptedData, $cypherMethod, $key, $options=0, $iv);
우선, 위의 예제 코드는 php openssl_encrypt
을 사용하는 방법에 대한 올바른 예입니다?
두 번째로 정확하고 안전한 $key
과 $iv
을 생성하는 내 방법은 무엇입니까? 계속 읽으므로 키는 암호로 보호되어야합니다.
마지막으로 AES-256-CBC
에는 32-byte
값이 필요하지 않습니까? 그렇다면, 왜 openssl_cipher_iv_length()
은 길이가 int(16)
입니까? int(32)
이 아니어야합니까?
유익한 정보를 제공해 주셔서 감사합니다. 간단한 질문입니다. 하나의 일반 용도 키를 사용해야합니까? 아니면 매번 무작위로 생성해야합니까? –
같은 열쇠를 사용할 수 있습니다. 단지'openssl_encrypt'를 호출 할 때마다 새로운 난수 IV를 생성해야합니다. – puzzlepalace