> 위챗 애플릿 > 위챗 개발 > WeChat 공개 플랫폼 개발: 메시지 암호화

WeChat 공개 플랫폼 개발: 메시지 암호화

高洛峰
풀어 주다: 2017-02-27 13:36:58
원래의
3087명이 탐색했습니다.

얼마 전까지만 해도 WeChat의 기업 계정에서는 메시지 암호화를 필수로 사용했는데, 이후 공식 계정에서도 선택적 메시지 암호화 옵션을 추가했습니다. 현재 기업 계정과 공식 계정의 암호화 방법은 동일합니다(형식은 약간 다를 수 있음).

암호화 설정

공식 계정 백엔드에서 "개발자 센터"에 들어가면 Url 도킹 설정을 볼 수 있습니다:

WeChat 공개 플랫폼 개발: 메시지 암호화

[설정 수정]을 클릭하면 수정 페이지로 들어갈 수 있습니다.

WeChat 공개 플랫폼 개발: 메시지 암호화

세 가지 암호화 방법이 있습니다.

일반 텍스트 모드입니다. 원본 메시지 형식

호환 모드, 일반 텍스트 및 암호 텍스트가 공존합니다. 공식적으로 출시된 제품은 사용하지 않는 것이 좋습니다(아직 일반 텍스트가 포함되어 있어 암호화 효과를 얻을 수 없기 때문입니다)

안전 모드, 이 모드에서는 메시지가 암호화되며 개발자 서버는 공식 알고리즘을 통해 이를 해독하여 일반 텍스트 모드에서 원본 메시지를 얻을 수 있습니다.

암호화된 메시지의 경우 반환된 정보도 암호화되어야 합니다.

암호화된 정보 처리

Senparc.Weixin.MP는 세 가지 유형의 메시지를 자동으로 판단합니다. 개발 과정에서 어떠한 복호화 및 암호화 프로세스에도 주의를 기울일 필요가 없으며 여전히 그렇습니다. "일반 텍스트 모드" 개발 프로세스에 남아 있습니다.

해당 MessageHandler에서는 일부 매개변수를 통해 현재 암호화 상태를 알 수 있습니다.

messageHandler.UsingEcryptMessage: 암호화된 정보 사용 여부(호환 모드 및 보안 모드 포함)

MessageHandler.UsingCompatibilityModelEcryptMessage: 메시지 암호화에 호환 모드가 사용되는지 여부

위 두 속성의 조합을 통해 계정이 현재 어떤 암호화 모드를 사용하고 있는지 알 수 있습니다(물론 대부분의 경우 개발자는 신경 쓸 필요가 없습니다).

더 나은 정보 추적을 위해 MessageHandler는 FinalResponseDocument 속성을 추가했습니다.

messageHandler.ResponseDocument: 응답 데이터 XML 객체의 일반 텍스트 구조

messageHandler.FinalResponseDocument: final 서버로 반환되는 XML 개체는 암호화되지 않은 경우 ResponseDocument와 일치합니다. 그렇지 않으면 자동으로 암호화됩니다.

암호화 원칙

암호화 알고리즘 정보(샘플 다운로드 포함) 여러 언어) ) 공식 도움말 문서에서 찾을 수 있습니다: http://mp.weixin.qq.com/wiki/index.php?title=%E6%8A%80%E6%9C%AF%E6%96% B9%E6 %A1%88

여기서 설명하고 싶은 것은 EncodingAESKey 입니다. 공식적인 설명이 좀 헷갈립니다. 실제로 EncodingAESKey는 AESKey의 Base64 인코딩이고 AESKey는 길이 32(a-z, A-Z, 0-9에서 선택)의 임의 문자열입니다. 32자의 Base64 인코딩 길이는 44(마지막 문자는 =)로 고정되어 있으므로 =를 제거하면 최종 43자의 EncodingAESKey가 생성됩니다. EncodingAESKey는 메시지 암호화 및 복호화 과정에서 사용되며 엄격한 기밀성이 요구됩니다.

다음은 EncodingAESKey를 생성하는 C# 코드입니다.

protected string CreateEncodingAESKey()
        {
            string aesKey = GetRadomStr(32);//获得a-z,A-Z,0-9的随机字符串
            var encodingAesKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(aesKey), Base64FormattingOptions.None);
            return encodingAesKey.Substring(0, encodingAesKey.Length - 1);
        }
로그인 후 복사


더 많은 WeChat 공개 플랫폼 개발: 메시지 암호화 관련 기사를 주목하세요. PHP 중국어 웹사이트!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿