人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

結論から書くと
「こんにちは」から「rO0ABXQAD+OBk+OCk+OBq+OBoeOBrw==」
と変換されるための法則は何なのかを知りたいです。

質問が長すぎるといわれたので、以下に記載しました。
みなさま、よろしくお願いいたします。

http://www.zuikoji.com/hatena/q.txt

●質問者: clothespin
●カテゴリ:コンピュータ インターネット
✍キーワード:こんにちは 法則
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● b-wind
●27ポイント

Base64 - Wikipedia

上記ページに手順も含めてすべて書いてあります。


手順自体はシンプルなもので、逆変換も可能です。

Base64変換の手順を以下に挙げる。

1. 元データを6bitずつに分割。(6bitに満たない分は0を追加して6bitにする)

2. 各6bitの値を変換表を使って4文字ずつ変換。(4文字に満たない分は = 記号を追加して4文字にする)

◎質問者からの返答

ありがとうございます。

http://www.zuikoji.com/hatena/q.txt

質問の続きがこちらに書いてあるのですが、

「Base64」ということは判明しています。

その後、具体的な変換の部分でつまずいています。

「rO0ABXQAD+OBk+OCk+OBq+OBoeOBrw==」をデコードすると、「(文字化けの文字列)こんにちは」となってしまいました。

なぜ文字化けするのか、変換方法が間違っているのであればどのような可能性があるのかも知りたいです。


2 ● standard_one
●27ポイント

変換方法はシンプルなものなので、そこで間違う可能性は低いと思います。

「こんにちは」の前に付いているデータをBASE64だという前提で元にもどしてみましたが、文字列本文とは別の何かの付加情報っぽいですよね。

1010(A) 1100(C) 1110(E) 1101(D) 0000(0) 0000(0) 0000(0) 0101(5) 0111(7) 0100(4) 0000(0) 0000(0) 0000(0) 1111(F)

※括弧内は試しに16進で読んでみた場合の値

---

ところで「あるサイト」というのは、どこでしょう?

それが解決のヒントにならないですかね?


3 ● i_kumagoro
●26ポイント ベストアンサー

UTF-8で書かれた「こんにちは」という文字列をjavaでserializeし、base64でエンコードするとそうなります。

ここのコードを以下のように変更したコードで、base64でデコードする前のバイト列がresult.txtに保存されます。

import java.io.*;

class SerializeTest {
 public static void main(String[] args)
throws IOException {
FileOutputStream outFile = new FileOutputStream("result.txt");
ObjectOutput out = new ObjectOutputStream(outFile);

out.writeObject("こんにちは");
out.flush();

out.close();
outFile.close();
 }
}


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ