java - 为什么des加密后输出乱码?
大家讲道理
大家讲道理 2017-04-18 10:09:45
0
8
1097
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(8)
PHPzhong

UTF-8 文字列データではなくなったからです。あなたはそれを暗号化しました。 DES は読み取り不可能なバイナリ データを生成します。新しい String を UTF-8 エンコーディングに従って強制的に解釈すると、当然文字化けします。それが直接読み取れるのであれば、暗号化する意味はありません。
数学的アルゴリズムに基づいて暗号化されたほとんどのデータはバイナリ ブロックまたはストリーム データを生成するためです。復号化して初めて元のテキストを読むことができます。
暗号化したデータをテキストやHTTP通信として保存したい場合は、BASE64でエンコードすれば文字化けのないASCII文字列になります(もちろん人間には理解できません)。 。

いいねを押す +0
左手右手慢动作

暗号化後はバイト配列になります。new String()

を使用してすべてのバイト配列を文字列に変換できるわけではありません。
いいねを押す +0
小葫芦

これは、メモリ バイト データ ストリームと文字列の違いを理解していないことが原因である可能性があります。
テキスト エディタを使用してデータを 16 進表示で表示したことがある場合は、この質問は発生しません。
文字列文字列が表示される理由は、メモリ データが UTF-8 エンコードなどの特定のエンコード ルールに準拠しているためです。
しかし、一般に、暗号化されたデータは完全なメモリ データ ストリームであり、文字列エンコード ルールに準拠していないため、文字列エンコード規則を強制的に使用して解析すると、「文字化けコード」になります。

しかし、暗号化の目的が正しくなければ、人々はそれを理解できないでしょうか?

ただの文字化けです

いいねを押す +0
黄舟

暗号化後は判読できなくなるはずです。

いいねを押す +0
伊谢尔伦

ここに同様の記事があります https://segmentfault.com/q/10...

いいねを押す +0
PHPzhong

なぜ意味不明ではないと思いますか?

いいねを押す +0
洪涛

暗号化後は通常バイト配列になり、16 進数の文字列に変換できます

いいねを押す +0
刘奇

暗号化後は、Base64 を使用できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート