PHP에서 MB_EREG_REPLACE_CALLBACK 함수는 MBString Extension 라이브러리의 함수 중 하나에 속합니다. 일치하는 프로세스 중에 문자열과 일치하는 정규 표현식을 사용하여 문자열 컨텐츠를 동적으로 수정하기 위해 콜백 기능을 실행할 수 있습니다. 이 기능은 복잡한 문자열 암호화 및 암호 해독을 처리 할 때 mb_ereg_replace_callback을 매우 유용하게 만듭니다. 이 기사에서는 MB_EREG_REPLACE_CALLBACK을 통해 문자열 암호화 및 암호 해독을 구현하는 방법을 이해하도록 안내합니다.
mb_ereg_replace_callback은 php의 mbstring 확장에서 제공하는 함수입니다. 이 기능은 정규 표현식을 사용하여 문자열을 찾고 일치하는 부분을 콜백 함수로 넘긴 다음 원래 일치하는 컨텐츠를 교체하는 것입니다. 기능의 프로토 타입은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">mb_ereg_replace_callback</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ 패턴 : 대상 문자열의 특정 컨텐츠와 일치하는 정규 표현식.
$ 콜백 : 콜백 함수, 일치하는 컨텐츠가 나타나면 컨텐츠를 처리하도록 함수가 호출됩니다.
$ string : 대상 문자열, 함수가 처리 할 대상 문자열.
mb_ereg_replace_callback을 통해 문자열의 암호화 및 암호 해독을 구현하려면 두 가지 논리를 정의해야합니다.
암호화 : 문자열의 각 문자를 규칙에 따라 암호화 된 문자로 변환합니다.
암호 해독 : 암호화 된 문자열을 원래 문자열로 복원하십시오.
암호화 및 암호 해독 로직은 문자의 ASCII 값을 일정량으로 증가 시키거나 감소시키는 것과 같은 간단한 문자 오프셋을 사용하여 구현할 수 있습니다.
암호화 과정에서 문자열에서 각 문자를 상쇄하도록 선택할 수 있습니다. 예를 들어, 문자의 ASCII 값을 고정 값에 추가하십시오. 다음은 mb_ereg_replace_callback을 사용한 암호화의 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 암호화 된 콜백 함수</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">encrypt_callback</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-comment">// 일치하는 캐릭터를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$char</span></span><span> = </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];
</span><span><span class="hljs-comment">// 문자를 변환합니다 ASCII 가치와 추가 3</span></span><span>
</span><span><span class="hljs-variable">$ascii</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>) + </span><span><span class="hljs-number">3</span></span><span>;
</span><span><span class="hljs-comment">// 암호화 ASCII 값을 다시 캐릭터로 변환하십시오</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$ascii</span></span><span>);
}
</span><span><span class="hljs-comment">// 암호화 할 문자열</span></span><span>
</span><span><span class="hljs-variable">$input_string</span></span><span> = </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;
</span><span><span class="hljs-comment">// 각 캐릭터를 정규 표현 및 암호화와 일치시킵니다</span></span><span>
</span><span><span class="hljs-variable">$encrypted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_ereg_replace_callback</span></span><span>(</span><span><span class="hljs-string">'[A-Za-z0-9]'</span></span><span>, </span><span><span class="hljs-string">'encrypt_callback'</span></span><span>, </span><span><span class="hljs-variable">$input_string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Encrypted: "</span></span><span> . </span><span><span class="hljs-variable">$encrypted_string</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
설명하다:
Encrypt_Callback 함수는 각 일치하는 문자에 대한 암호화 작업을 수행하여 문자의 ASCII 값을 3에 추가합니다.
정규 표현 [A-ZA-Z0-9]은 모든 글자와 숫자와 일치합니다.
mb_ereg_replace_callback은 encrypt_callback 함수를 호출하여 문자열을 처리하고 암호화 된 문자열을 생성합니다.
암호 해독 공정은 암호화 작업의 역 프로세스입니다. 간단히 말해서, 암호화 중에 사용 된 오프셋에서 문자의 ASCII 값 만 빼면됩니다. 다음은 해독 된 코드 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 콜백 함수를 해독합니다</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">decrypt_callback</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-comment">// 일치하는 캐릭터를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$char</span></span><span> = </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];
</span><span><span class="hljs-comment">// 문자를 변환합니다 ASCII 가치와 빼기 3</span></span><span>
</span><span><span class="hljs-variable">$ascii</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ord</span></span><span>(</span><span><span class="hljs-variable">$char</span></span><span>) - </span><span><span class="hljs-number">3</span></span><span>;
</span><span><span class="hljs-comment">// 해독 된 ASCII 값을 다시 캐릭터로 변환하십시오</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">chr</span></span><span>(</span><span><span class="hljs-variable">$ascii</span></span><span>);
}
</span><span><span class="hljs-comment">// 암호화 된 문자열</span></span><span>
</span><span><span class="hljs-variable">$encrypted_string</span></span><span> = </span><span><span class="hljs-string">"Khoor, Zruog!"</span></span><span>;
</span><span><span class="hljs-comment">// 각 캐릭터를 정규 표현과 일치시키고 해독하십시오</span></span><span>
</span><span><span class="hljs-variable">$decrypted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_ereg_replace_callback</span></span><span>(</span><span><span class="hljs-string">'[A-Za-z0-9]'</span></span><span>, </span><span><span class="hljs-string">'decrypt_callback'</span></span><span>, </span><span><span class="hljs-variable">$encrypted_string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Decrypted: "</span></span><span> . </span><span><span class="hljs-variable">$decrypted_string</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
설명하다:
decrypt_callback 함수는 각 일치하는 문자에 대한 암호 해독 작업을 수행하여 문자의 ASCII 값을 3으로 빼냅니다.
마찬가지로, 정규 표현식 [A-ZA-Z0-9]을 사용하여 모든 문자와 숫자와 암호화 된 문자열을 처리하기 위해 콜백 함수와 일치합니다.
MB_EREG_REPLACE_CALLBACK 에 기반한이 암호화 및 암호 해독 방법은 간단한 암호화 로직을 처리 할 때, 특히 문자열 내용이 비교적 단일이고 문자 세트가 제한 될 때 사용하기에 매우 적합합니다. 문자열을 동적으로 수정하고 복잡한 암호화 및 암호 해독 작업을 수행하는 데 도움이됩니다. 이 방법은 간단한 시나리오에 적합하지만보다 복잡한 암호화 요구 사항에 대해 성숙한 암호화 알고리즘 (AES, RSA 등)을 사용하는 것이 좋습니다.
mb_ereg_replace_callback 을 통해 문자열 암호화 및 암호 해독 로직을 쉽게 구현할 수 있습니다. 이 기능은 일반 표현식 및 콜백 기능의 강력한 기능을 결합하고 문자열 처리 중에 다양한 복잡한 규칙을 유연하게 적용 할 수 있습니다. 그러나이 암호화 방법은 주로 간단한 시나리오에 적합합니다. 생산 환경에서 보안 요구 사항이 높은 응용 프로그램의 경우보다 전문적인 암호화 기술을 사용해야합니다.