私はサービスを使用するためにgSOAPを使用していますが、私は基本的な認証文字列を2つの異なる文字列にエンコードしています.1つはLinux 32ビットから、もう1つはAS400からです。 コードは同じです。 これはEBCDICを使ったAS400かもしれませんが、私はそれをASCIIに変換しており、同じ結果が得られます。 誰かに同じ問題があったのですか?DebianとAS400が異なるbase64エンコード文字列を与える理由
これは、Linuxのエンコードされた文字列である:
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';
のLinuxからコード:これは、符号化コードである
ooGVo4GVhIWZg5aVoqSUhZl6h4WZopaB8g==
:これはAS400エンコードされた文字列である
c2FudGFuZGVyY29uc3VtZXI6Z2Vyc29hMg==
システムは正常に動作しています。 AS400からは機能しません。 AS400のエンコーディングに問題があると思いますが、AS400システムへのアクセスが制限されているため、トレースできません。
あなたの質問には、ソースコードと、入力データと2つのコード化された結果の文字列が表示されるはずです。だから、**あなたの質問を編集して**改善してください(そして動機づけてください) –