PHPz2017-04-18 10:11:45
UTF-8 文字列データではなくなったからです。あなたはそれを暗号化しました。 DES は読み取り不可能なバイナリ データを生成します。新しい String を UTF-8 エンコーディングに従って強制的に解釈すると、当然文字化けします。それが直接読み取れるのであれば、暗号化する意味はありません。
数学的アルゴリズムに基づいて暗号化されたほとんどのデータはバイナリ ブロックまたはストリーム データを生成するためです。復号化して初めて元のテキストを読むことができます。
暗号化したデータをテキストやHTTP通信として保存したい場合は、BASE64でエンコードすれば文字化けのないASCII文字列になります(もちろん人間には理解できません)。 。
高洛峰2017-04-18 10:11:45
これは、メモリ バイト データ ストリームと文字列の違いを理解していないことが原因である可能性があります。
テキスト エディタを使用してデータを 16 進表示で表示したことがある場合は、この質問は発生しません。
文字列文字列が表示される理由は、メモリ データが UTF-8 エンコードなどの特定のエンコード ルールに準拠しているためです。
しかし、一般に、暗号化されたデータは完全なメモリ データ ストリームであり、文字列エンコード ルールに準拠していないため、文字列エンコード規則を強制的に使用して解析すると、「文字化けコード」になります。
しかし、暗号化の目的が正しくなければ、人々はそれを理解できないでしょうか?
ただの文字化けです