서비스를 사용하기 위해 gSOAP를 사용하고 있으며, 다른 인증 문자열을 두 개의 다른 문자열 (하나는 Linux 32 비트, 다른 하나는 AS400)로 인코딩했습니다. 코드는 동일합니다. EBCDIC을 사용하는 AS400 일 수도 있지만 ASCII로 변환하면 같은 결과가됩니다. 누군가가 똑같은 문제가 있었습니까? 리눅스에서데비안과 AS400이 다른 base64로 인코딩 된 문자열을 제공하는 이유는 무엇입니까?
if (!t)
t = (char*)soap_malloc(soap, output_length /*(n + 2)/3 *
* 4 + 1 */);
if (!t)
return NULL;
p = t;
for (int i = 0, j = 0; i < input_length;) {
uint32_t octet_a = i < input_length ? (unsigned char)s[i++] : 0;
uint32_t octet_b = i < input_length ? (unsigned char)s[i++] : 0;
uint32_t octet_c = i < input_length ? (unsigned char)s[i++] : 0;
uint32_t triple = (octet_a << 0x10) + (octet_b << 0x08) + octet_c;
t[j++] = encoding_table[(triple >> 3 * 6) & 0x3F];
t[j++] = encoding_table[(triple >> 2 * 6) & 0x3F];
t[j++] = encoding_table[(triple >> 1 * 6) & 0x3F];
t[j++] = encoding_table[(triple >> 0 * 6) & 0x3F];
}
for (int i = 0; i < mod_table[input_length % 3]; i++)
t[output_length - 1 - i] = '=';
t[output_length - mod_table[input_length % 3] + 2] = '\0';
코드 :
ooGVo4GVhIWZg5aVoqSUhZl6h4WZopaB8g==
이 인코딩 코드이고 :이 AS400 코드 스트링 인
c2FudGFuZGVyY29uc3VtZXI6Z2Vyc29hMg==
:
이
리눅스 문자열 인코딩 시스템이 잘 작동합니다. AS400에서 작동하지 않습니다. AS400 인코딩 문제가있는 것 같지만 AS400 시스템에 대한 액세스가 제한되어 있으므로 추적 할 수 없습니다.
질문에 소스 코드, 입력 데이터 및 인코딩 된 두 개의 결과 문자열이 표시되어야합니다. 그러니 ** 그것을 향상시키고 (그리고 동기를 부여하기 위해) ** 귀하의 질문을 편집하십시오 ** –