文字列 (ユーザー ID と日付/時刻スタンプで構成される) があり、ColdFusion のEncrypt(inputString, myKey, "Blowfish/ECB/PKCS5Padding", "Hex")を使用して暗号化します。
サード パーティとのインターフェイスを確立するには、次の手順を実行する必要があります。
- 結果の文字列内の各文字ペアを HEX 値に変換します。
- HEX 値は整数として表されます。
- 結果の整数は、ASCII 文字として出力されます。
- すべての ASCII 文字が結合してバイト文字列を形成します。
- その後、バイト文字列は Base64 に変換されます。
- Base64 は URL エンコードされ、最終的に送信されます (おお!)
元の cfEncrypted 文字列に「00」が含まれている場合は、すべてシームレスに動作します。
HEX 値 00 は、(関数 InputBaseN を介して) 整数 0 として変換され、ASCII 文字への正確な変換を拒否します!
結果の Bytestring (したがって、URL 文字列) はめちゃくちゃになり、サードパーティはそれを解読できません。
ページの上部に <cfcontent type="text/html; charset=iso-8859-1"> と宣言しています。
00 を ASCII として正しく出力する方法はありますか? 元の暗号化文字列に「00」が含まれないようにすることはできますか? どんな助けでも大歓迎です:)