• ベストアンサー

base64でエンコード(デコード)するには?

タイトルの通りなのですが、base64でエンコード(デコード)するには、どうすればよいのでしょうか? もちろん、モジュールを用いれば簡単に済みますが、モジュールが入っていない環境のことも考え(将来は、違うマシンで使うことも考えられるため)、モジュールを用いないでエンコード(デコード)したいと思っております。 また、base64は、どういった規則でエンコードされているのでしょうか? よろしくお願いします。

  • Perl
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

base64で使われているアルゴリズムはいくつかの相違はありますが、 基本的に uuencode/uudecode で使われているものと同一です (3バイトのデータを4バイトで表現する)。 そして、Perlのpack/unpackはテンプレート文字列 'u' を使うことにより uuencode/uudecodeすることができます。そこで以下のようなサブルーチン を使ってBase64のエンコード/デコードができます。 use strict; use warnings; use MIME::Base64; my $base64_pat = "A-Za-z0-9+/"; my $uu_pat = "`!-_"; sub my_encode_base64 { my $arg = shift; my $mod3 = length($arg) % 3; my $tmp = pack 'u', $arg; $tmp =~ s/^.//msg; $tmp =~ tr[`!-_][A-Za-z0-9+/]; #substr($tmp, -(3-$mod3), 3-$mod3, q{=} x (3-$mod3)); substr($tmp, -(3-$mod3), 3-$mod3) = q{=} x (3-$mod3) unless $mod3==0; $tmp; } sub my_decode_base64 { my $arg = shift; $arg =~ s/=?=$//; $arg =~ tr[A-Za-z0-9+/][`!-_]; my $len = pack 'c', 32 + 0.75*length($arg); unpack 'u', $len . $arg; } my $str = <<EOS; こんにちは世界 サンプル文字列 EOS my $r1 = my_encode_base64($str); my $r2 = encode_base64($str); print "\$r1 = $r1\n"; print "\$r2 = $r2\n"; my $r3 = my_decode_base64($r2); my $r4 = decode_base64($r2); print "\$r3 = $r3\n"; print "\$r4 = $r4\n";

参考URL:
http://www.darts.jp/reference/rfc/rfc2045-jp.txt,http://www5d.biglobe.ne.jp/~stssk/rfc/rfc3548j.html

その他の回答 (1)

noname#22650
noname#22650
回答No.1

こちらに解説とC言語のサンプルがあります。 http://www.sea-bird.org/doc/Cygwin/BASE64enc.html

関連するQ&A

  • エンコードとデコードについて

    はじめまして。 下記1、2の操作をした場合についてお尋ねします。 1、【SoundEngine】でwma形式の音楽ファイルをwav形式に変換。 2、【windows media エンコーダ9】でwav形式に変換した音楽ファイルをwma形式に戻す。 辞書で調べると、エンコードとデコードの意味は下記のとおりでした。 ・エンコード(encode)は、符号化ともいい、デジタルデータを一定の規則に従って、目的に応じた符号に変換することである。 ・デコード(decode)は、復号ともいい、エンコードの対義語。エンコードした情報を元に戻すこと。 下記サイトでは、上記1の操作がデコードで、上記2の操作がエンコードとなっています。 感覚的には、最初に行う上記1の操作がエンコードで、後に行う上記2の操作がデコードのような気がします。 正しくは、どのように理解すればよいのでしょうか。 どうか教えてください。 ●FL Studioを使った手探りのDTM http://filenotfound.blog15.fc2.com/blog-entry-120.html#

  • base64_decodeに関して

    base64でエンコードされたPHPソースをデコードし、 その内容を表示させるスクリプト(base64.php)を 実行すると、ブラウザには decode.txt の様に 文字化けした内容が表示されます。 元のソースを表示させる方法は無いでしょうか? base64.php、decode.txt は以下よりダウンロードし、 検討して下さい。 ================================================================ http://www.hp-toolbox.com/base64_decode.zip ================================================================ 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • base64?デコード?

    「テキストファイルを送るからデコードして使って」と言われ、 下記のような内容のファイルをもらったのですが、デコードとはどうすればいいのでしょうか? ・1つ目のテキストファイル "begin-base64 664 ○○(ファイル名).zip&#xA;fsjiiafaBABAEakhajkiij~(以降ランダムな文字列)" info="base64&gt;&gt;zip" ・2つ目のテキストファイル "FkufaskKKSDOkaklaaeiijjn~(以降ランダムな文字列)=" info="○○(ファイル名)&#xA;base64-&gt;rar" ネットで調べて、「このテキストファイルをバイナリソフトでデコードすれば目的のファイルになる」 ということはわかったんですが、 テキストの中のどこからどこまでをコピーすればいいのかわかりません。 ランダムな文字列の部分だけの新しいテキストファイルをつくってデコードをしたんですがエラーが出ました。 エンコードしたソフトでデコードすればいいのでしょうか? よろしくお願いいたします。

  • BASE64による全角文字のエンコード・デコードのコーディング(VB)

    こんにちは、初めて質問します。 私は現在BASE64(VB)を制作中の者です。半角英数のエンコード・デコードのコーディングは完成したのですが、全角文字となると手も足も出ない状態です。 そこで、これのついて御存知の方、全角文字のエンコード・デコードのコーディング方法を教えて下さい。 サンプルコードも見せていただければ幸いです。 宜しくお願いします。

  • BASP21によるbase64のデコードについて

    base64でエンコードされた画像ファイルを表示したいと思っています。 basp21でデコードして、BinaryWriteで書き出したんですがうまく表示できません。 CAPICOMを使った場合は正しく表示されます。 basp21でデコードする際になにか処理をはさむ必要があるのでしょうか? 以下作成したサンプルソースです。 ---ソース------------------------------------------ <%@ Language="VBScript" %> <% Set Stream = Server.CreateObject("ADODB.Stream") Set CAPIUtil = Server.CreateObject( "CAPICOM.Utilities" ) Set objBasp = Server.CreateObject("basp21") strEncoded = "/9j/kL・・base64でエンコードされたJpegファイル" strDecoded = CAPIUtil.Base64Decode( strEncoded ) strDecoded2 = objBasp.Base64(strEncoded, 1) Response.ContentType = "image/jpeg" ' Response.BinaryWrite strDecoded ' Response.BinaryWrite strDecoded2 %> ---------------------------------------------ここまで----- 以上よろしくお願いいたします。

  • Turbo C++での文字列のエンコード(Base64)

    Turbo C++(Explorer)を使っているのですが、文字列のエンコードってどうすればできるのでしょうか? 下記のような記事も見たのですが自分の使用している環境ではIndyコンポーネントがありません。 何か良い方法ありますでしょうか?お願いします。 -------------------------------- Base64エンコード・デコードする機能は、Indyコンポーネントで提供されています。 Base64のエンコードにはTIdEncoderMIME、デコードにはTIdDecoderMIMEを使います。 //文字列のエンコード AnsiString Src = "こんにちは、世界"; AnsiString Ret = IdEncoderMIME1->Encode(Src); // Ret == "grGC8YLJgr+CzYFBkKKKRQ==" --------------------------------

  • [ 文字列 -> ファイル ] BASE64デコード

    文字列又は、クリップボードから、 指定した保存先にファイルとして、 BASE64デコード出来るソフトは、ないでしょうか? アップロード機能のないブログサービスで、 公開したい文書などをBASE64エンコードして、 公開しているのですが、初心者でも分かり易く、 ダウンロードしてもらうために、 上記のようなソフトがあればと探しているのですが、 見つかりません。 何か、良い方法がございましたら、 教えてください。よろしくお願いします。

  • Base64エンコードツール探しています。

     Base64エンコードツールを探しています。入力はテキスト、文字コードをUTF-8で出力データがBase64エンコードできるツールです。  単一行の変換ツールはいろいろあるのですが、複数行の変換が行えるものを探しています。外部に渡すURLでエンコードして渡さないといけないのですが行数が多いので1行1行変換するのが大変なんです。 【変換前】 12345 67890 【変換後】 MTIzNDU= Njc4OTA=  プログラミング知識はありません。モジュールの存在を教えていただいても何もできませんし、VBやJavaでこうやればできる言われても・・・、という具合です。  どのカテゴリに掲載すれば良いのか、プログラミングではないのでここに掲載させていただきました。

  • JavaでBase64をエンコード・デコード(長めです)

    初めまして。今,Javaの勉強をしています。 Base64のエンコード・デコードを行うプログラムをコマンドプロンプトでコンパイルまでは成功するのですが,いざ実行してみると >java Base64 Exception in thread "main" java.lang.NoClassDefFoundError: Base64 (wrong name: d escriber/Base64) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) というエラーがでます。 プログラムは下記のサイトを参考にさせていただきました。 http://www.ki.rim.or.jp/~kuro/Java/Etc/Etc-03-SunMisc.html クラス名とファイル名は同じはずなのですが…。 実行方法が悪いのかどうなのかわかりませんが,よろしければ指摘お願いします 。 わかりにくい文章ですみません。。

    • ベストアンサー
    • Java
  • クッキーの値のエンコード/デコードの理由

    JavaScriptでクッキーを作成する為に『とほほ』へ行ったところ、 クッキーの値はエンコード/デコードする必要があると書かれていました。 今日まで2年間ずっと知らないままJavaScriptやCGIでクッキーの読み書き処理 をしていました。 とほほにはその詳しい理由が書かれておらず、 他のウェブサイトでも理由が見つからなかったので教えていただけたら幸いです。 やはりエンコードが必要ということは異なるOS間で不具合が起きるということで、 自分のマシンで動作チェックするだけでは不具合は発見できないということなんでしょうか? よろしくお願いします。

専門家に質問してみよう