Base54


公開 (UL): 2021-06-01
更新 (UD): 2021-06-01
閲覧 (DL): 2022-12-07

この記事のもくじ

→本文へ
当サイトは SNS の公式アカウントがないので,「議論ネタ」にする際は,皆さんのブログ,メーリングリスト,SNS や掲示板などで,適当にハッシュタグを付けたりリンクを掲載するなどしてご利用ください。

前の記事

2021-06-01
PPOP

次の記事

2021-12-17
Perl で利用宣言時にモジュールをカスタマイズする

最近の記事

2022-08-09
代表的な画像ファイル形式一覧
2022-04-04
サイトのローカル試験と実ウェブ上の差を縮める手法(Perl)
2021-03-04
全角⇔半角の変換
2021-02-23
五十音の「辞書順」の処理
2020-12-22
年月日から曜日を求める数式
新着情報
She appears also the top page.

新着情報 Recent docs.

Sorry, but almost these pages are only Japanese.
「だし」に使われる障害者 «Japanese governments wrong use "inspirational porn" for costing increase to the nations.»
自賠責の保険料値上げは「交通事故障害者支援のため」と言っているが,じつは財務省が6千億借りて焦げ付かせている事実があるという話。
経費節減! 介護設備 DIY のヒント «The goods and works those cost very low for home care.»
トイレと浴槽に手すり設置, 布団からベッドへ,そして部屋の灯りをリモコン化……が計3万! ついでに猫ケージも手作り。
「Jアラート」がポンコツになる理由 «How does the J-alert become useless.»
情報を受け取れる人を減らしてミサイルの犠牲者を増やすオヤクショのシステム。
個人情報の提示要求者側に求められる責任 «The responsibilities of the government that wants some private infomations.»
給付金の手続きに突然「旧住所」の提示を求めて来たお役所の対応の疑問からその「責任」を考える。
日本の「IT 人材不足」の正体 «The simple reason why Japanese companies lack IT-skill.»
保険会社からのセキュリティガバガバメールが「IT 人材不足」の正体を暴く。
「マイナンバー」が危険なこれだけの理由 «The reasons of "My-Number System" is danger.»
それでも「マイナンバー」を推す裏の理由を推察。

人気記事 Frequent view pages.

オランダの介護に対する考え方一例
人気急上昇中! 検索語「オランダ 介護の考え方」での上位御礼!
表計算で「令和」に対応する方法
How to adapt the Gengo era "Reiwa" on spreadsheet applicaiton.

古いアプリも OK。「表計算 令和」の検索結果上位御礼!
表計算ソフトで予定表を自動作成する超便利な方法 «How to make the schedule table automatically on spread-sheet.»
「毎月第○×曜日」的な法則は自動で作らせてラクしよう!
表計算ソフトに「個人情報保護機能」を仕込む方法 «Prevention to leak private-data with spread-​sheet macro function.»
「漏えい」のためのフェイルセーフ。「表計算 個人情報」の検索結果上位御礼!
Wary-Basher (ワリバッシャー)
DIY device that enables the handicapped to operate many things with a switch like push-button.

障害者の様々な操作をスイッチ操作で実現する器具。キットも発売中! 「作り方」PDF ダウンロード多数御礼!←地方教育委で人気。
貧乏人を殺す行政の構造 «Structurally, the administrators kill the poors in Japan.»
ヘタすると多摩川に流されるところだった台風 19 号

この記事に対する → 調布市の反応

おすすめ! Recommend

文字ベース天気予報 «Weather forecast in text mainly from JMA Json-data.»
古いブラウザやスマホ,音読ソフトでも大丈夫! 気象庁の JSON データを利用した文字ベースの天気予報(試験版)。
「事故防シート」について «Cared persons taking with "Jiko-​Bow-​Sheet" prevents from accidents.»
介護現場の負担軽減と事故防止のアイデア
【連載】 キーボードの「キー」の詳しい使い方 «The detial of usage each key on keybord.»
各キーの機能詳細。機能別五十音順一覧。
和易ゐ記 (WAI-WIKI) «WAI-WIKI is light­weight markup language for Japanese, and generates HTML on this server on-​demand.»
当サイトで開発/使用中の日本語向けに特化した軽量マークアップ言語
コロナ検査所一覧 «Light search for corona-test station.»
東京都サイトで配布の CSV ファイルを元に検索。スクリプト不使用のため,古い機械やブラウザ,音読ソフトでも大丈夫!

ご連絡 Contact

▼ メールフォームはこちら
SSL 証明書の更新に不具合が多いため,期限切れエラーが出た際は,お手数ですが「例外指定」をお願いいたします。

ファイルの暗号化
当サイト管理者(石川)宛にメール添付で送信するファイルを暗号化したい時は,唯一のパスワードを PPOP で取得できます。 PPOP gives a password for encryption of the file(s) attached your mail to the admini­strator of this site M.Ishikawa.
PPOP

時事川柳 News Senryu

杖をつく
 以前に思考は
  障害者

 例の某氏の発言……「杖をついていると身体障害者に見えて, みんなが大事にしてくれる」。このお方の思考が, いかに世の中とズレているかは明らか。 問題なのは,そんな方を「担ぎ出す人」のほうだと思う。 「来賓」として出席したのが,金沢医科大の記念式典だとかで, その大学の「顧問」らしい。つまり「金沢医科大学」の人たちは, そういう思考をする方を顧問にして平気でいられるということ。 (2022-10-30)

ご支援 Support this site.

まだまだ コロナ失業中!!
CORONA-NEET, seeking works now!

この活動をご支援いただける方はこちらへ Could you support this site, see here (but Japanese).
都道府県庁さん, 地方自治体さんや教育委員会さん, 障害者就労支援機関さんやその他公的機関,省官庁さん, 「タダ見」しているだけでは, 格差が広がるだけだと思いませんか?

 Base54 は,任意バイト列をアルファベットと数字で表現する方式。Base64 と同等の機能だが,記号(+,/,=)と,アルファベットのうち数字と紛らわしい I,L,O,S を除いた大/小文字の 54 文字を使う。MD5 などで求めたハッシュ値をパスワードとして扱う時などに最適。
  Base54 is an explaination of any bytes like Base64 encoding, but it doesn't use punctions (+, /, =) and alphabets I, L, O and S both cases, because they are confusing with digits 1, 0 and 5. E.g., you can treat the result of Base54 as "password" easy.

 パスワードとしての利用は,ファイルを他者に見られないよう保護したい時に使うパスワードを生成するために,このサイトで使う PPOP で採用している。PPOP については,以下を参照。

▼ PPOP
http://treeware.jp-help.net/?ssss9

 なお,このサイトの管理者(石川)が勝手に作った規格のため,必死になって検索で調べたりしないよーに。

● 概略 / SYNOPSIS

 「User-ID+パスワード種」から MD5 で求めた 128 ビットバイナリ値を Base54 で文字列化したものをパスワードとして使う例。

▼ Perl での使用例
  use	Base54;		# This module
  use	Digest::MD5;	# an example
  my	$pws ="PasswordSeed";
  	print " User-ID :";
  my	$uid = <STDIN>; chomp $uid;
  my	$pwright = encode_base54( md5( "$pws:$uid" ) );
  	print "Password :";
  my	$pwinput = <STDIN>; chomp $pwinput;
  	print( ($pwinput eq $pwright)?"OK!\n":"NG!\n" );

● 関数 / FUNCTION

 Perl のモジュールで,使えるようになる関数は以下の2つ。

ソースコードは公開未定

◆ encode_base54( $bytestring )

 任意バイト列から Base54 文字列を作って返す。使用される文字は,数字と,アルファベットから I,L,O,S を除いた 22 文字のそれぞれ大文字と小文字の 44 文字,合わせて 54 文字。
 必要な文字数は以下の式で求められる。

▼ バイト数→Base54 文字数
  base54chars = int( ( bytelength * 32 + 22 )/ 23 )

◆ decode_base54( $base54string )

 Base54 文字列から元のバイト列に直して返す。Base54 の文字数から求まるバイト数は以下の通り。

▼ Base54 文字数→バイト数
  bytelength = int( ( base54chars * 23 )/ 32 )

● 詳細 / DETAIL

 54^4 ≒ 2^23 であることを利用し,54 種類の文字を使って,任意のバイト列を 23 ビットごとに区切り4文字ずつ符号化する。Base64 とは異なり,下位ビットから符号化する。バイトの並びは Intel 形式の整数(Little-endian integer)に近い扱いになる。
 使用する文字は,数字と,アルファベットから I,L,O,S を除いた 22 文字のそれぞれ大文字と小文字の 44 文字の,合わせて 54 文字。以下の順に「数字」として扱う。0~F(大文字)は 16 進数と同じで,a(小文字)は 32,z は 53 を表す「数字」として扱う。

▼ Base54 文字→値
  0123456789ABCDEFGHJKMNPQRTUVWXYZabcdefghjkmnpqrtuvwxyz

 文字列の作り方は,23 ビット整数の 54 の「剰余」を求めて上記の文字に割り当て,54 の商に対してまた 54 の「剰余」を求めて……を3回繰り返し,最後の「商」を4文字目として扱う。
 たとえば,3バイトの並びが 0x12, 0x34, 0x56 の場合,16 進数の 0x563412 として扱う。23 ビット整数として文字化すると……。

▼ 0x563412→Base54 文字
  0x563412 = 5649426(10)
  5649426 mod 54 = 0 →"0"
  int( 5649426 / 54 )= 104619, 104619 mod 54 = 21 →"N"
  int( 104619 / 54 )= 1937, 1937 mod 54 = 47 →"t"
  int( 1937 / 54 )=35 →"d"
  result: "0Ntd"

 3バイトから 23 ビットを符号化すると1ビット余るので,それは次の 22 ビットの最下ビットに追加して符号化していく。たとえば上記の次に 0x78, 0x9A, 0xBC というバイト並びが来る場合は,ここから 22 ビット取り出した 0x3C9A78 を左に1ビットシフトして,前述の最上位ビットの0(ゼロ)を加算した 0x7934F0 から文字列を求める。
 余った2ビット(2)は,続くバイトから 21 ビット持ってきて左に2ビットシフトし,2を加算した結果から文字列を求める。以降同様。

 バイト列終端で 23 ビットに満たなかったビットは,上位ビットを0(ゼロ)で埋めて 23 ビット整数として扱って文字にする。余ったビット数に応じて追加する文字数を決める。

 冗長度は約 139%(=32/23)となる(Base64 は 133%=4/3)。



© M.Ishikawa; TREEWARE 2022.