●BASE64エンコードの仕組み

「●BASE64エンコードの仕組み」の編集履歴(バックアップ)一覧に戻る
●BASE64エンコードの仕組み」を以下のとおり復元します。
*情報
作者名:Craving研究家
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be/?cmd=upload&act=open&page=%E2%97%8FBASE64%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF&file=BASE64%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89.nako]]
*概要
 BASE64の仕組みです。これをカスタマイズすれば結果をバイナリや配列で返したり、独自の暗号化アルコリズムが作成できます。
*サンプルプログラム
 「こんにちは」をBASE64エンコードB
 それを表示
 それをBASE64デコードB
 それを表示
*本体
 !B64_TABLE=『ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=』
 ●BASE64エンコードB(Sを)
  結果とは文字列;ARYとは配列
  Iで1から(Sのバイト数)まで繰り返す
   ASC(MIDB(S,I,1))をARYに配列追加
  MDとは整数=ARYの配列要素数%3
  もし、MD!=0ならば(3-MD)回(0をARYに配列追加)//"="の代わりに"A"を付加
  Iとは整数;TMPとは整数
  (I<(ARYの配列要素数-1))の間
   TMP=(ARY[I]<<16)||(ARY[I+1]<<08)||(ARY[I+2]<<00)
   結果にMIDB(B64_TABLE,((TMP>>18&&$3F)+1),1)を追加
   結果にMIDB(B64_TABLE,((TMP>>12&&$3F)+1),1)を追加
   結果にMIDB(B64_TABLE,((TMP>>06&&$3F)+1),1)を追加
   結果にMIDB(B64_TABLE,((TMP>>00&&$3F)+1),1)を追加
   I=I+3
  もし、MD!=0ならば//付加した"A"を"="に置換
   MD=3-MD
   結果=LEFTB(結果,(結果のバイト数-MD))
   MD回(結果に「=」を追加)
  結果で戻る
 ●BASE64デコードB(Sを)
  S=Sの「=」を空に置換
  MDとは整数=Sのバイト数%4
  Iとは整数;Jとは整数
  TMPとは整数;DATとは配列
  MD回(Sに"A"を追加)// "="を"A"に置換
  (I<(Sのバイト数))の間
   TMP=(B64_TABLEの0からMIDB(S,I+1,1)をバイト検索<<18),
     ||(B64_TABLEの0からMIDB(S,I+2,1)をバイト検索<<12),
     ||(B64_TABLEの0からMIDB(S,I+3,1)をバイト検索<<06),
     ||(B64_TABLEの0からMIDB(S,I+4,1)をバイト検索<<00)
   DAT[J+0]=(TMP>>16)
   DAT[J+1]=(TMP>>08)&&$FF
   DAT[J+2]=(TMP>>00)&&$FF
   I=I+4;J=J+3
  結果とは文字列
  DATで反復(CHR(対象)を結果に追加)
  結果=LEFTB(結果,結果のバイト数-MD)//付加した"A"を排除
  結果で戻る
*BASE64デコードの他の仕方
 ●BASE64デコードC(Sを)
  結果とは文字列
  Pとは数値=-8;Aとは数値
  Cとは数値;Dとは数値
  Iで1から(Sのバイト数+1)まで繰り返す
   C=(SのIから1バイト抜き出す)をB64_TABLEの0からバイト検索
   もし、C<0ならば続ける
   A=(A<<6)||(C&&63)
   P=P+6
   もし、P>=0ならば
    D=(A>>P)&&255
    もし、C!=64ならば
     結果にCHR(D)を追加
    A=A&&63
    Pから8を直接引く
  結果で戻る
----
総合:&counter()
今日:&counter(today)人
昨日:&counter(yesterday)人
#comment()
----

復元してよろしいですか?

ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。