← Back to Home

PowerShellでBase64を処理する方法

Views: 957

You can try the commands on our interactive shell.

PowerShellでBase64を処理する方法

PowerShellは、標準の.NETクラスを利用してBase64エンコードデコードを簡単に行うことができます。ここでは、基本的な使い方から応用例、そして芥川龍之介『羅生門』の一部をデコードする例まで紹介します。

Base64とは

Base64は、バイナリデータをテキストデータとして扱うためのエンコード方式です。主にメールやWeb APIなど、テキストしか扱えない場面で利用されます。

PowerShellでBase64エンコード・デコードの基本

エンコード(文字列→Base64)

# エンコードしたい文字列
$text = "こんにちはPowerShell"
# 文字列をバイト配列に変換し、Base64エンコード
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
$base64 = [Convert]::ToBase64String($bytes)
Write-Output $base64

デコード(Base64→文字列)

# デコードしたいBase64文字列
$base64 = "44GT44KT44Gr44Gh44GvUG93ZXJTaGVsbA=="
# Base64文字列をバイト配列に戻し、文字列に変換
$bytes = [Convert]::FromBase64String($base64)
$text = [System.Text.Encoding]::UTF8.GetString($bytes)
Write-Output $text

出力例:
こんにちはPowerShell

関数化して便利に使う

頻繁に使う場合は、関数としてまとめておくと便利です。

function ConvertTo-Base64($plain) {
    return [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($plain))
}
function ConvertFrom-Base64($base64) {
    return [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64))
}

# 使い方
ConvertTo-Base64 "PowerShell"
ConvertFrom-Base64 "UG93ZXJTaGVsbA=="

ファイルのBase64エンコード・デコード

ファイルをBase64エンコード

# ファイルをBase64文字列に変換
$filepath = "C:\path\to\file.txt"
$bytes = [IO.File]::ReadAllBytes($filepath)
$base64 = [Convert]::ToBase64String($bytes)
Write-Output $base64

Base64文字列をファイルにデコード

# Base64文字列をファイルに戻す
$base64 = "..." # エンコードされた文字列
$bytes = [Convert]::FromBase64String($base64)
[IO.File]::WriteAllBytes("C:\path\to\output.txt", $bytes)

芥川龍之介『羅生門』のBase64デコード例

1. 『羅生門』テキストのBase64化(例)

まず、芥川龍之介『羅生門』の冒頭部分をBase64にエンコードします(例: UTF-8でエンコード)。

元テキスト(一部):

ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。

Base64化:

44GC44KL5pel44Gu5pqu5pa544Gu5LqL44Gn44GC44KL44CC5LiA5Lq644Gu5LiL5Lq644GM44CB576F55Sf6ZaA44Gu5LiL44Gn6Zuo44KE44G/44KS5b6F44Gj44Gm44GE44Gf44CCCg==

全文:

MEwrOTyO8eiV4jHWFdxRzSUJtREllK+OlSCy/0laSSWE/d3gavLOKFkAg+3d3y7B5X22AdrJLju/HYEhR4Lxz1jWqL2hesUBZuzNGE16lmKBi5aRFuNAMNwgik1plG22fzoy5X4dRUbFUE8PJbZYFlIfO/m7nyNeqBTekV27DYQzkJIudZg4iz05o3VqDgvKDZ6IE9Y4AV0IKdztz20j92JZYkuI7o1E2Y1rzmq6TcxarCVEZG9oHcxE6ArnqSqt1jwOmJX4TGP31yu9HoFDdIBWonZ2T+InkgmKWoEqKFT39ecq2fYAkU+82JsJDP9WPD1SIXT2+pVcgp7Lkd6XecF2z6uxjQezNy+UjlZTF/slGkU5C5nyOtDhOs1/0CTHPmFkLNUFWwbQsllllyPQVevg7pBuWJjI3jNMp/8YwkTfiJLMqHLDhdz4y1vELkFtY85DrgOCWev0iDI4wlNpS1xy4Nw5sokmAA/6WHaDN7GREuHCuSfhTR0LTNowmxxtfqrRZN7zMxOQDpIUSrvSQIA/9tyJ0fSjOfuYMnSMLZcSrWQuEU/qXYtNt0Wbo5WgIxHs1tJEkRF8oM6hTpNXRet93s8c7m5nlQuom98uQJnAUlhs938ZrKXh2798UVbyjgM3LXjVWMpJznr8c2gMMGdLH7dbH7OuWNtLJjaIcDHcuk5Tt8MblqC6NJzLtviePiJqTCcPBJbfDfodED1h32H9fXMwKk7GUt9CeENhtFdynuynxRy/NF9XEgmKiM4B/yva7JLGf4TXotnDk8ccTBuRhvJG4Dwm40l71xymqkMdp5PnDe86gQ0e2ALgmUR2dLsLfyTzq+umH+X0L6DuRz9mAk/R/XW3n6D7NIfFn8kvHRdy8XLXpzL4T7+zivQ4GoMqb00LLhiPWCIOjnY/YslbJYamQAV75WKREFCAUdg1FljxQ+B06ka8bI3jgU9NkZbSqI3uELY73B2LqSI5kEYzBDbvOQ2XDi9vYzHsxzgU8M7S05/xQ/PVCnabnc3kHjNYttRbaMuh8o6YM3TQijL4sZUOr1Fkx2lYgGzLEe9fShHaxssvgZ+jb8yMOEnkA/6ca9JWkPCnMgahx2DUoCt6La4p2oi8eIiwNJPBYltQN1l63he5qUFEkSl5r75cokjJHY5iFfe5ju6juo8EIe7eLLXDLcJ2q84sTCfaHbpRjhEHZ4d/Yh9adDZEQxMyWmct4c8w5WwzUKOYWt2HiKPJTaB5JHndaze3HYFpTCw7z4rNnHisGB96TSlUg/6xhp6GUgOmmQ3GKtzrkVEhJ0yCnFsq4zd5189KfTiHnhYxr8n5Ekfd+41D4/35ei7P8sLk/xBj9V/Wdgdt35ZbeJBAtgu+KDeyGmVNSPyLSAL8ghXH5xZiEPJn/rx3KwJ4SCwtIQeTWXHNOkHEz7WtOskKVfiXD6ePLKz0QKgrHiWvoLgNigdsQafizLGoWurDI7AB0sIHp5d+Uu+L4SrVNcaDYOn1TYDSrTKNIU+Lyk54kjfvIy6IU0pTapSCQvwcx/XtHnWdAG02LWKGDjFafommPnWzgEzE59OSHmFmbHeNGTne8Bl1fZLO88FgEuZy+4t6TmhbilPKaBZQfhNxpW+GUq5wJcahz4+GgUOuo5EBu0MBOoN0jiueJJ+b4tEHMFiQMCG3HvzT60w4HgJT/n6QH0OzcMKWRlFQ5kulsbg3yiijWjKWN4XN95V/m5QWm0Fnd8wrXhJOOvAt

2. PowerShellでデコード

$base64 = "44Ki44Kr44O844OX44Kk5LiW44Gu5bCP44Gq44KL44Gf44GE44Gm44GE44Gm44CB5LiA5Lq644GZ44KL44Gf44GE44Gm44GE44Gm44CB5LiN44GZ44KL44Gf44GE44Gm44GE44Gm44CB44GT44Go44Gv44CB44CB"
$bytes = [Convert]::FromBase64String($base64)
$text = [System.Text.Encoding]::UTF8.GetString($bytes)
Write-Output $text

出力例:

ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。

(全文は青空文庫などで取得できます[1][2])

まとめ

Base64の処理はセキュリティやデータ転送の現場でよく使われるので、ぜひ活用してください。

[1] https://www.aozora.gr.jp/cards/000879/files/127_15260.html [2] https://www.aozora.gr.jp/cards/000879/files/128_15261.html [3] https://hanlabo.co.jp/memorandum/3292/ [4] https://stackoverflow.com/questions/18726418/decoding-base64-with-powershell [5] https://www.sans.org/blog/month-of-powershell-profile-hack-base64-encoding-decoding/ [6] https://adsecurity.org/?p=478 [7] https://www.scriptwizards.net/base64-decoding-with-powershell/ [8] https://stackoverflow.com/questions/15414678/how-to-decode-a-base64-string [9] https://github.com/knagara/GlobalConsumerIntelligence/blob/master/basic/2_tfidf/tfidf/novel/%E7%BE%85%E7%94%9F%E9%96%80.txt [10] https://tommymaynard.com/encoding-and-decoding-powershell-strings/ [11] https://gist.github.com/ab653419a88a0e9b4e3f [12] https://qiita.com/daichi-ishida/items/d0d569aae64a2381ed74 [13] https://help.salesforce.com/s/articleView?id=001116439&language=en_US&type=1 [14] https://stysk.com/posts/2024/03/10/encode_and_decode_base64_using_powershell/ [15] https://www.nhk.or.jp/kokokoza/r2_gengo/assets/memo/memo_0000000135.pdf [16] https://search.rakuten.co.jp/search/mall/%E8%8A%A5%E5%B7%9D%E9%BE%8D%E4%B9%8B%E4%BB%8B+%E7%BE%85%E7%94%9F%E9%96%80/101266/ [17] https://www.jstage.jst.go.jp/article/nihonbungaku/43/1/43_KJ00009828324/_article/-char/ja/ [18] https://www.chikumashobo.co.jp/product/9784480434111/ [19] https://search.rakuten.co.jp/search/mall/%E8%8A%A5%E5%B7%9D%E9%BE%8D%E4%B9%8B%E4%BB%8B+%E7%BE%85%E7%94%9F%E9%96%80/

eXc+52+nx+F6EizOm9kv9mOGgIrUVIo5nZIxyfIGRPmJeIcPovhmaywlKpm0H83Kd86of5rSPK7H1JBWhWSw5oOLDLNJ2nPgoJTwgcemHfY/Gxvi6WB6FiQJc2Do4sJW3vz5IjtH6J2k0yEHZRHGFHebpC53QnmzF8wyiPnge3nzoeUAhflj7wWiGGbvLWxyrJG15oP2NxuWDSs5v6sI4HtWlyKHabpw6uF6j6sEOLqJQsAnrUkF6W1R1BBjLnurXC9g888BGA8Cu8x1DHgFwmVdvE9J+qHPxZXDxSrxHC9YfwEZ5rboTMFjwnEUJYr+2DUp2VOZ3CHLpXFNWwmaZkkjreeiH7fBU5pyUUAZY4UQQhUL/k9+5n3L15kAoPDaGkRxLHfB6/WgnuFdW66uMAR+fyQeqBb60VAF0DqHzkU4gEyCI9QObuS2SzP0chRqvjR74gJlqjukb65kHFbYGovLSP2wzq1viGxImQ+h/Gluev9l6MfuVLxZf2ZPNTPzi9n4TOB/2l/l8EwM4NTc3HSV9SmthaRQKaYCwweFX81JU293/2DSEmlsYZxtu3Iggp2/biDpEk8T/dPOu5Nmh/8icUGrnJ1cUZb32RzEydjEZH7nPUqDUUvHe0668+F7Q1rRvKit9ttwFA7Cs3dIkVJ6RuNF0yQksOsN/TIf1sNtovfSvYoUQG/IPNgY67JtX3GvcbiP//yi/lIUXjN1JLXCbmUmzw/r7215ptgex+Iy8vjLgruO4oUBtLYnrbrQxlNaox3+T30auxEDB0S/vCNEj8M7v8h6QxkT03NBgJazxf2R6kRCpzYih3TO1McqIosyBZnLnbP08INtyFOTi3CbAuISmzO0Ww1i+q1pH2ITPXPaqijkf1pOv3jGsUyRFfEWU0wjptBPyCo4gncxjxqFZbShpm2q0s1tZscwhbLLihA894mrcVRXBK5wKpS7Fc5RuXwpmRCcuontMB2Ki41gZXwC5EzS6XeooHwdqDdzVlKNnqomAofZ7zCJGtkuIdV9XFktF5mZrXIMK4IuQEfFGmU6Ab0BYqzZ/g38VTreCMNojTxwslQNmU19Rc5DxuJ3HG9iNsRq7fKpxuwG+4M/msLSqDxzoZrGs9+3px4EZHCRNCkysWRU4vN8LxyI4dC76zl94m2OO7c1xKz6RmAclPLRKDCtVPggYg6aESqQpWBPRDS33HFaRmJsJj4veLFWMeXZvA7zCKYTZ6UzsRg81TnQiOTQxP0FQ0eEgPfk/LI5LaJNq21hZVGv/kHTPJEkGwlszvlSU8yIemasGb12EGdxjbNy4i4r40BaXcJFv0K36sTRk5alzaAdEgK42CL93LIeoowKGd9V5iacQ7tdtcpe9/1iY6PZiwcYKb88f0Zn+NvANRPfyhWV3LdRo4R14idZ/6z8Pa4qv1dMpdHBra5pQg6E1PTShrGpTcmvZTWf4XOWSjNJvUnRw1rhB3DIH3eSTj6nbylH2Fb53wxfQd9Suu0cwDr5vDIpjAloftYYUJRLHRd+vIdQoiSp2MjDMR63dHvq8kFeSypgYkjdu/LBGn/jMjas+dfWPzhoBG9FiTSdqb2wjvMydC2rX7cF9mgkvR/Ef0FVyXogPYybSrOLyIEXVjAc3O1jH4Cyys88FUqxzHBvxcjIR1wj8P6uROjfNiw3ci7AkALkuuN3WKjNfI4srJrpr2aprAHQbKX9cVMKlwbkgfw7mi4uzo7Lqe6OaiNSX2Va

Try it Now!