상대방의 요청은 인터페이스의 비즈니스 데이터를
인코딩하여 결과 문자열을 제출하고, 암호화 방법에 해당하는 키(key)와 초기화 벡터(오프셋)도 제공하는 것입니다.AES-128-CBC-PKCS5Padding
加密,然后再做 Base64
처음에 이 암호화 방식을 보고 해당하는 암호화 함수가 있는지 알아보기 위해 PHP 함수 라이브러리를 검색해 보았는데, 검색해 보니 그런 함수가 없어서 직접 구현해야 한다는 걸 알게 되었습니다. 확장 구현을 사용할 수 있지만 PHP 7.1.0부터 mcrypt 기능이 중단되었습니다. 이 기능을 사용하지 않는 것이 좋습니다. OpenSSL 기능을 참조하세요. 매뉴얼 하단에서 openssl_encrypt(암호화된 데이터) 기능을 이해하면 가능하다는 것을 알았습니다. 구현 기능은 다음과 같습니다.
function encrypt($input, $key, $iv){ return base64_encode(openssl_encrypt($input, 'AES-128-CBC', $key, OPENSSL_RAW_DATA,$iv)); } // 解密 function decrypt($input, $key, $iv){ return openssl_decrypt(base64_decode($input), 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); } // 测试加密 (我这里用的是json字符串) $dataJson = '[{"Code": "123123", "Name": "Bob", "Address": "\u94f6\u5ddd\u5e02"}, {"Code": "464776", "Name": "Hello", "Address": "\u5317\u4eac\u5e02"}]'; print_r(encrypt($dataJson, $key, $iv)); //u9Bd8oHXDGvjZcTIX9HK1r1q+aSu+/48gsfoGVrxoScZuX8yaj/xco8F2yHt2T987JNHil9LwjAmu9o5NJaicWQDaiKwMD5o70k1A9bGjDd71xb4hXRx3ddZwI85oTQQEUQLadR5C759SdaN8AOxlzH+yGlAWTOaEleulKoRTwaknG1NCM/qIRQ8gI5lzv+D // 测试解密 $strr = 'u9Bd8oHXDGvjZcTIX9HK1r1q+aSu+/48gsfoGVrxoScZuX8yaj/xco8F2yHt2T987JNHil9LwjAmu9o5NJaicWQDaiKwMD5o70k1A9bGjDd71xb4hXRx3ddZwI85oTQQEUQLadR5C759SdaN8AOxlzH+yGlAWTOaEleulKoRTwaknG1NCM/qIRQ8gI5lzv+D'; print_r(decrypt($strr, $key, $iv)); // [{"Code": "123123", "Name": "Bob", "Address": "\u94f6\u5ddd\u5e02"}, {"Code": "464776", "Name": "Hello", "Address": "\u5317\u4eac\u5e02"}]
> **解决的方案,是把加密方式 AES-128-CBC 替换成 AES-256-CBC**
위 내용은 PHP에서 AES-128-CBC-PKCS5Padding 암호화를 구현하는 방법을 자세히 설명하는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!