PHP에서 Bin2Hex 및 OpenSSL_encrypt는 이진 데이터를 16 진 표현으로 변환하고 데이터를 암호화하는 데 사용되는 두 가지 매우 유용한 기능입니다. 이 기사는이 두 기능을 함께 사용하여 실제 암호화 예를 제공하는 방법을 설명합니다.
BIN2HEX 는 PHP의 내장 기능으로 이진 데이터 (일반적으로 문자열 또는 기타 데이터)를 16 진 형식의 문자열로 변환합니다. 예를 들어, 바이트 데이터를 안전하게 저장하고 전송할 수있는 16 진 표현으로 변환합니다.
예:
<span><span><span class="hljs-variable">$binary_data</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$hex_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$binary_data</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hex_data</span></span><span>; </span><span><span class="hljs-comment">// 산출:68656c6c6f</span></span><span>
</span></span>
OpenSSL_encrypt는 OpenSSL 라이브러리를 사용하여 데이터를 암호화하는 강력한 암호화 기능입니다. 이 기능은 AES, DES, Blowfish 등과 같은 다양한 암호화 알고리즘을 지원하며 일반적으로 암호화 방법, 암호화 키 및 암호화 해야하는 데이터를 제공해야합니다.
예:
<span><span><span class="hljs-variable">$plaintext</span></span><span> = </span><span><span class="hljs-string">"This is a secret message."</span></span><span>;
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"secretkey12345"</span></span><span>;
</span><span><span class="hljs-variable">$method</span></span><span> = </span><span><span class="hljs-string">"AES-128-ECB"</span></span><span>;
</span><span><span class="hljs-variable">$encrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">openssl_encrypt</span></span><span>(</span><span><span class="hljs-variable">$plaintext</span></span><span>, </span><span><span class="hljs-variable">$method</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$encrypted</span></span><span>; </span><span><span class="hljs-comment">// 산출加密后的密文</span></span><span>
</span></span>
이 두 기능이 사용되는 시나리오는 일반적으로 이진 데이터를 암호화 할 때 처리 및 전송이 쉬운 16 진 문자열로 끝나기를 바랍니다. 이는 암호화 된 데이터가 암호화 된 데이터를 텍스트에 저장하는 데 필요한 일부 애플리케이션 시나리오에 유용합니다. 예를 들어 데이터베이스에 저장되거나 네트워크를 통해 전송됩니다.
AES-128-ECB가 암호화되어야하는 일반 텍스트 데이터가 있다고 가정하고 결과를 스토리지를 위해 16 진수 문자열로 변환합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 원래 일반 텍스트 데이터</span></span><span>
</span><span><span class="hljs-variable">$plaintext</span></span><span> = </span><span><span class="hljs-string">"Sensitive information here"</span></span><span>;
</span><span><span class="hljs-comment">// 암호화 키 및 방법</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"encryptionkey123"</span></span><span>;
</span><span><span class="hljs-variable">$method</span></span><span> = </span><span><span class="hljs-string">"AES-128-ECB"</span></span><span>;
</span><span><span class="hljs-comment">// 암호화를 실행하십시오</span></span><span>
</span><span><span class="hljs-variable">$encrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">openssl_encrypt</span></span><span>(</span><span><span class="hljs-variable">$plaintext</span></span><span>, </span><span><span class="hljs-variable">$method</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-comment">// 사용 bin2hex 암호화 된 이진 데이터를 16 진수 문자열로 변환하십시오</span></span><span>
</span><span><span class="hljs-variable">$hex_encrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$encrypted</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"암호화 된 16 진수 문자열: "</span></span><span> . </span><span><span class="hljs-variable">$hex_encrypted</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
실제 응용 분야에서 암호화 결과는 일반적으로 이진 데이터이며, 이는 직접 저장하거나 전송하는 데 불편합니다. 특히 암호화 된 데이터를 데이터베이스에 저장하거나 네트워크로 전송 해야하는 경우 이진 데이터는 인코딩 문제를 유발할 수 있습니다. BIN2HEX를 사용하면 암호화 된 이진 데이터를 ASCII 문자열로 변환 할 수 있으며, 이는 안전하게 저장하거나 전송할 수 있습니다.
암호화 된 데이터를 데이터베이스에 저장 해야하는 경우 일부 데이터베이스 필드는 바이너리 데이터 저장을 직접 저장하지 않기 때문에 일반적으로 16 진 형식으로 변환됩니다. 암호화 된 데이터를 BIN2HEX를 통해 저장 가능한 16 진수 문자열로 변환하면 전송 및 스토리지 중 데이터의 호환성이 보장됩니다.
암호화 된 데이터, 특히 HTTP 요청 또는 기타 텍스트 프로토콜을 통해 전송할 때 바이너리 데이터가 잘못 인코딩되거나 손실 될 수 있습니다. 따라서 암호화 된 데이터를 16 진 형식으로 변환함으로써 이러한 문제를 피할 수 있으며 암호화 된 데이터의 무결성을 보장 할 수 있습니다.
물론, 암호 해독 공정은 HEX2BIN 을 사용하여 HEX 문자열을 이진 데이터로 다시 변환 한 다음 OpenSSL_Decrypt를 통해 해독해야합니다.
예:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 암호화 된 16 진수 문자열</span></span><span>
</span><span><span class="hljs-variable">$hex_encrypted</span></span><span> = </span><span><span class="hljs-string">"2b7e151628aed2a6abf7158809cf4f3c"</span></span><span>;
</span><span><span class="hljs-comment">// 16 진 문자열을 이진 데이터로 변환합니다</span></span><span>
</span><span><span class="hljs-variable">$encrypted_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hex2bin</span></span><span>(</span><span><span class="hljs-variable">$hex_encrypted</span></span><span>);
</span><span><span class="hljs-comment">// 암호 해독</span></span><span>
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-string">"encryptionkey123"</span></span><span>;
</span><span><span class="hljs-variable">$method</span></span><span> = </span><span><span class="hljs-string">"AES-128-ECB"</span></span><span>;
</span><span><span class="hljs-variable">$decrypted</span></span><span> = </span><span><span class="hljs-title function_ invoke__">openssl_decrypt</span></span><span>(</span><span><span class="hljs-variable">$encrypted_data</span></span><span>, </span><span><span class="hljs-variable">$method</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"암호 해독后的明文: "</span></span><span> . </span><span><span class="hljs-variable">$decrypted</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Bin2Hex 와 OpenSSL_encrypt를 결합하여 암호화 된 이진 데이터를 16 진 문자열로 변환하여 손쉬운 저장 및 전송을 할 수 있습니다. 이 접근법은 데이터의 이식성을 향상시킬뿐만 아니라 암호화 된 데이터의 보안 및 무결성을 보장합니다. 이 기사의 예제를 통해 실제 프로젝트 에이 두 기능을 적용하여 데이터 처리의 효율성과 신뢰성을 향상시키는 방법을 마스터 할 수 있기를 바랍니다.