検索

ホームページ  >  に質問  >  本文

java - 为什么des加密后输出乱码?

大家讲道理大家讲道理2770日前1103

全員に返信(8)返信します

  • PHPz

    PHPz2017-04-18 10:11:45

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

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 10:11:45

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

    を使用してすべてのバイト配列を文字列に変換できるわけではありません。

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:11:45

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

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

    ただの文字化けです

    返事
    0
  • 黄舟

    黄舟2017-04-18 10:11:45

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

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:11:45

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

    返事
    0
  • PHPz

    PHPz2017-04-18 10:11:45

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

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:11:45

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

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 10:11:45

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

    返事
    0
  • キャンセル返事