問題タブ [apache-commons-codec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - PDF ファイルと Excel ファイルが Base 64 でエンコードされる方法と理由は?
私が読んだ Base64 エンコーディングのアプリケーションは、バイナリ データまたは一部の文字列を Base64 形式に変換することでした。しかし、ファイル (例: PDF、Excel) 自体が Base64 でエンコードされており、それぞれのソフトウェアで開くこともサポートすることもできないことを知りました。
私の質問は次のとおりです。
- ファイル全体を Base64 にエンコードできますか。
- これの適用シナリオは何ですか。
- どのデコーダーを使用するかは、コンテンツを見ればわかりますか。
(参考までに、私は wiki Base64 を読みました)
java - 文字列から16進数へ、およびその逆へのJavaのApache共通コーデック
文字列を16進数でエンコードしてから、再度文字列に変換しようとしています。この目的のために、Apache 共通コーデックを使用しています。特に、次のメソッドを定義しました。
奇妙なことは、元に戻すときに同じ最初の文字列が得られないことです。さらに奇妙なことに、取得したバイト配列は、文字列の最初のバイト配列とは異なります。私が書いた小さなテストプログラムは次のとおりです。
出力の例は次のとおりです。
また、別の奇妙な動作があります。バイト配列 ([B@1afe17b) は固定ではなく、コードの実行ごとに異なりますが、その理由がわかりません。
java - mysql で正しくエンコードされた Sha1 ハッシュ文字列が、Java 文字列として異なる方法で表示される
私は現在、Dao パターンを使用して mysql データベースと組み合わせた Java プログラムを開発しています。テーブルに保存するユーザー情報があり、元のパスワード文字列の Sha1 ハッシュ バージョンを保存しています。私はそれを行うために apache.commons.codec.digest.DigestUtils を使用しています。php-mysql で表示される文字列は完璧ですが、Java テスト プログラムで同じ文字列を表示しようとすると、まったく異なる結果になります。
ユーザーオブジェクトのコンストラクターは次のとおりです。
たとえば、パスワードとして「aff」を使用してユーザーを作成する場合、
mysql で "0c05aa56405c447e6678b7f3127febde5c3a9238" が表示されますが、これは正しく、オンライン sha1 ハッシャーの出力と同じです。
しかし、データをオブジェクトに読み込んで、Java の Sysout(User.getPassword()) で表示すると、明らかに同じではない "c14b77e8930a8bfd884c8917f2b7335501a39dde" が表示されます。
これを引き起こしている原因について何か考えはありますか?Byte[] の問題に関する以前の投稿をいくつか読みましたが、DigestUtils.sha1Hex(password) メソッドはプレーンな文字列を返すと言われています。それで、私は何が欠けていますか?