#### Signature algorithm The general steps for signature generation are as follows: In the first step, set all the data sent or received as set M, order the parameters of the non-empty parameter value in the set M according to the parameter name ASCII code (lexicon), and use the format of URL key value pair (key1=value1 & key2=value2…) into a string stringA. Pay special attention to the following important rules: - Parameter name ASCII code from small to large (lexicoorder); - If the value of the parameter is empty, the signature is not involved; - The parameter name is case-sensitive; - When the verification call returns or actively notifies the signature, the transmitted sign parameter does not participate in the signature and verifies the generated signature against the sign value. In the second step, key gets the `stringSignTemp` string on the last splicing of stringA, and performs MD5 operation on `stringSignTemp`, and then convert all the characters of the resulting string into upper case to get the sign value signValue. Note: The key is 32 bytes in length. ##### Example: - The APPID and API keys used in this example are as follows: ``` AppID: d114c07a-24ed-41b2-9cc3-58ae5bb9ace1_2303065600000005 AppSecret: 2303065600000006 ``` - The assumed transmission parameters are given below: ``` appid: d114c07a-24ed-41b2-9cc3-58ae5bb9ace1_2303065600000005 clientid: 2C05476AA26C nlast: 0 ts: 1679539549647 version: V3.34 ``` - Step 1: Order the parameters in the key=value format and in the ASCII lexicicographical order as follows: ``` stringA := "appid=d114c07a-24ed-41b2-9cc3-58ae5bb9ace1_2303065600000005&clientid=2C05476AA26C&nlast=0&ts=1679539549647&version=V3.34"; ``` - Step 2: Splicing API key: ``` stringSignTemp := stringA + "&key=2303065600000006"; sign := MD5(stringSignTemp).toUpperCase(); == "5344FA09D02DB7912093D01A356A1C5A"; ``` - To get the final data sent: ``` ?appid=d114c07a-24ed-41b2-9cc3-58ae5bb9ace1_2303065600000005&clientid=2C05476AA26C&nlast=0&ts=1679539549647&version=V3.34&sign=5344FA09D02DB7912093D01A356A1C5A ```