- PR -

Base64エンコード・デコードについて

投稿者投稿内容
いしと
会議室デビュー日: 2005/06/29
投稿数: 11
投稿日時: 2005-09-08 10:18
早速ですが、暗号化結果のbyte配列をBase64エンコードを行い文字列にしたいと考えています。
いろいろ調べた結果、sun.misc.BASE64Encoderや、sun.misc.BASE64Decoderを使用すれば良いということが分かりました。
ですが、sun.miscパッケージは、非公開クラスのため、出来ることならば使用したくありません。
どなたか、同等の機能を持つモジュールをご存じないでしょうか?製品に組み込みたいので、オープンソース系のライセンスのものが望ましいです。

自分で実装するのは、最終手段だと考えています。
というか、皆さん平気で、sun.miscパッケージを使ってますが、問題があると感じた方は、居られないんでしょうか???
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2005-09-08 10:24
Jakarta Commons Codecにありますよ。

http://jakarta.apache.org/commons/codec/
org.apache.commons.codec.binary.Base64
いしと
会議室デビュー日: 2005/06/29
投稿数: 11
投稿日時: 2005-09-08 11:05
早速の返答ありがとうございます。
これだと、エンコード結果は、byte配列となるのですね。
BASE64EncoderクラスやBASE64Decoderクラスのように、エンコード結果は、文字列となり、デコード時は、文字列を指定するといった形が理想ですが、仕方がないのでしょうか。

BASE64Encoder/BASE64Decoderをそっくりそのまま置き換えられるものがあればいいのですが・・・
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-09-08 11:27
unibon です。こんにちわ。

引用:

いしとさんの書き込み (2005-09-08 10:18) より:
というか、皆さん平気で、sun.miscパッケージを使ってますが、問題があると感じた方は、居られないんでしょうか???


意外なこととしてはアプレットでは使えない(使うためにはセキュリティーの設定が必要になってしまう)というのが、意外ですね。知っている人にとってはあたりまえなことなのでしょうが、日頃アプレットを使っていなかったりすると、いざアプレット上で動かそうとして気づく、ということに陥ったりします。
http://www.vc-net.ne.jp/~ytp/bbs/java/thread0230.html#22904
の中の、特に 22953 あたりの記事で知りました。

引用:

いしとさんの書き込み (2005-09-08 11:05) より:
BASE64Encoder/BASE64Decoderをそっくりそのまま置き換えられるものがあればいいのですが・・・


たしかに sun.misc の中にあるクラスと、外部仕様がまったくコンパチなクラスを、誰か作ってくれれば良いんでしょうけどね。
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2005-09-08 11:35
うろ覚えですから合ってるかどうか分かりませんがw

javax.mail.internet.MimeUtility#encodeText()
ってBase64だったような違ったような。

混乱させるだけだったりすいません。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2005-09-08 12:00
引用:

BASE64Encoder/BASE64Decoderをそっくりそのまま置き換えられるものがあればいいのですが・・・



new String(byte[]) をつかえば、文字列に出来ませんか?
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2005-09-08 13:02

※ かなり勘違いがあったので削除。

[ メッセージ編集済み 編集者: いっきゅう 編集日時 2005-09-08 13:52 ]
いしと
会議室デビュー日: 2005/06/29
投稿数: 11
投稿日時: 2005-09-09 09:22
引用:

raystarさんの書き込み (2005-09-08 12:00) より:

new String(byte[]) をつかえば、文字列に出来ませんか?



確かに、new String(byte[]) を使用すれば、文字列に変換できます。byte配列に戻したい場合は、String#getBytes()で戻せますし。あとは、new String(byte[])もString#getBytes()もプラットフォームの文字コードの影響を受けるため、明に、「UTF-8」あたりを指定すれば良いのでしょうか。
とりあえず、この方針でいってみます。ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)