← Back to Home

PowerShellでBase64を処理する方法

Views: 933

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==

全文:

8MlACTN+C+1FT/FlEl5QD2YL1LqpEzSNtBruTQadYhIzWj2VeEmv5b9KRi1g2GTjQ3G8YVz9TsD68keuYZljuh9sbXMXQkKFpnfcNKY1aLJ56CcDwA0NjH6MhRdoyMCKdp7lMk2JokUpLgHq8z5o7dffZ0ewEaAviJlINe6t4IJs1HzJHu4ueEwrlXSoNbS8CJ/d/Qsg6qHHgAfyCE94AnIVdAYLV7ijzm3liNQmXhCm0s+Baqq1KnfgM5UaVqIhqyzwrCfmNtfIDRCi9cHZnfPvUOqTS1bShBVMy7RbStZ8jOeaFWArjJM5Tj25W8Dm+/T/Ipz+Hc+4rOJu7wUG8ecaW4QzbnThAchIH+PJuBhrWW9eyaF9up/SUBuR5KmOwYQnrVwNq0/VrawoqPovVpO34QCJ5yPr5i224ZQEBpZ3NURJIcWImPiXZdVID9RYaArh7X75eTe9UdZ4gsNztCOb0Jcx7Zbnw/i9CGCmng8dCEL6Lex1G3f11CZqKzPkTJVQaFsX7ccpV3SsdjSRio55CKiofAYhJK8R3pJuCBn6f3CR5CPhXGOwaNbqF62urUTh0DFlNZui3BU+Ivib82ljc9HWkJSkfjsGmn7qpk1Jea2pZaNawH/HWUgwd/WrnRSc1pPZNGNgNccdh6c2vy99xu9hG05HX/tpSnkMh3V7cQeiR6EFHk/X0oHHa7RxSXGm0W5iyFmyK7HIZznYCs/lRgb9Cz69QK+XRAlUImq0nz2HWVi/JZh7J15G3PemAXDh3cz36eRGs7mdWkNqNzFVtk/3CbnGrvW+CPk3fbvrc/fXDlsYQ/yjPL7OBQQSv4oemebmmCxQPlic6jAzojSYwP6SASjuj/DDQIa9gh+uwSggVn2vQ1Khjx6yoMnYGomYGUVkCwZ97Kas8ipPtdCvu9myZBs0qrvnVf6T2BFEMoX8yNY1HjksLGK55mYORDUEmc+G2ZAvcwdLQVVeeF1kDRUxz9SffDnfpbP2xE9d+phkAELwYZrz7lbRZGnfxakBjurOnPhOTtWoA2M+fKDuEPj3XkSs5iMcZzdBil3+ktR8P9Jz7K+jnMNU2ecW8PYM4huYwdzPrh2wKZ/e2rIIA1qkf3VYIYv1Q/WoMQ6DmqhzyWBVfSBi3TgsnkwSEhHIpRsG4vX44KBWF1IE11PLJQTee3L17SR12EC7NTttphjxV5hH4tXrmwug23SaG652oU6oMqoVqGL/4KgwfYhXrvrgSs1LT24ov2ugmFgOAoYDgNMdNzG11wyblVtAw6KjAPjIkoG+GAdjMP3DdEWXFUa17e2ZIYDxh1YyLDy3KnSxgVhnO8FcATAsI/RHXhsLWY6nPOxbPhoKO2oV2wETG22IyUx+P4ytmQh2uXtzdmvtPDcJSMrE54IknlYiIBuvivzjlXVPdT8ONwui0PmwpLqs7rAaEUDDli+9toUqplxm5l8h9OccaOJzrRW3eZalW2LfvQpFRiH00MxFtIKCz3ULMHH4kSfRmLgFDtjts9jsrk3jO7SyjE3TPkF/B/pUybWAQzzbBcs0fTtpEcDjQ1C5QDpMfrXGYMgbQ7tOZeiavxqblNeGgksjtn0rmDiBWASc1nXm1tuyQMfmM3FlS9QtVHFafaQOiVFhTliPnh6RGQDXhtV/+rLZAliMWziUxgpUKSlHxvTxZsxxNvKnuC6LIzMwRKlYKDV0OZtaIpjSLaJ5/WMGJm8aSr2sNZW14zgOoMB6FF37

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/

BiePLe59DSACLo6nO6qw9YsH5mB2qobpTzDyZgnFcy4A3g5z9smfYf/44zb8vhGJcn03oOvW5MS0UDp2L1ig26rlcpPHFsRbC7rFiwzdlau66GLEb7cIkXsKoucwoQ7wXUOFfVBvYxqlO0Z3VQIIOMCDYqNBYwBLSUfpyuaJ569XsEkSLfHCaunQ7ACVgSFfMlXqOox+0xJ/tiBI2+ZF5TsiQxoGwbrd7vq0Yf+cO0PBbz19akqWSBKUV5Ko3nK185vqEEwmTAj5C63o91Tql4UAAviAymWEziWQLVT5TEGwNN6+/OwMYzP8uO6zNOq1e7c6ACeEgVDFhZVTlMQUT/xvsYhrv9uvL+hDt+eEo2/Js+BhByDtFZagKjc/kgZ+38SUukhh2Rr4zs0E88e4AdoTIPtrkGUiuqIibAc2kbU5XmAUgYobShwSwDr+QXZlvYsIzw1M06zvJ4lwGDCHIl8IAdDkVtEAWEnC6Ss1yIBh6eI/iJH1Ozcjapm2A5F9NO9i+oXzva+599qFhDXCSd0v/WXv66CKwP2KwAW/74r6NVSPbKK3m1mFfD+xkob6NYnSdDyh1KHD0ZmCJk+/aN/Cc0zaD0oiCRqcb4DolKWAxWjfHdXMlJqmLmR9dcsjFdGdl/B6qTv8fxb81k3ubja5lZW1khr7TSsHb9HZQ2T1WFULDl7gSu4T9EnbPvDtzdsgoS54wjCaNGORFANvUU/7YoS7RcEbEj1KCTT3B97Tt/aWRbw1F2Bq1T5k2TuFCVu1JoBPIIUiQNpxu3Htq1FMmunYVTgEJ5zAYtDRpPFHBBPWKvz0lmZ7/7YO0d/E/9Q7TQf2fcog9mBDOGfgS+YCm6NmDB5Pfsj2e7eQZ8e9BITXhDUfsaqcJdEZ3AGbWbHLEjBydNJPePsjM6Uo7PFbUUWgM3De3Grw+Yi/12iRbwNHmwz4PT2lfpQiQt5xK8+C5mHGbUYfTaGJZD7YHE6m7woa3riv5LKz7KKRqVlalZyX4EusoKSUTi72fJaFdAvwUbZNwu6GHPInjJI6Jq8LNx+9QzikzIrxQW0WwedqCLQVCFzQoxUY6vyMkOOkIC83MHQLTYHbs2VPfwGl/fft9mw2B3LG2bykFESEyTLtNHwxu7078UHcdqsUp+q2onWEWmjNfQNEw2243AxFqsjVfu140LvleS7NxJoG/tktDgUTWIoFmwh904LeWL5NmKaQIuE8tCBs/B+US360VV3KN/CTVZvn/X+369yAmcvH5zyV8vgOd/2cXD1c71Z4yOeY4E4ZLBZLqz+PLZtEasWCvFULHU5R7wJt6I6SjzJUM3sMvLjhGQyh77GrMXg1P/fG0zGIChO7x+cdqExWDgXFz07ciTGPEbmQ7HuZjPWoGZhjYPOqhQxbp+BUqcCgxpoOVLicZc/HwEUNhMT+I5kF1YxQofxdN0qWcNJHa5s2lq8hnrmNyXx4KcH1MIHnow4JUZ7hjPpOZDD/39yt/aiWjaP+7m/C77EwBAYRJc/pwlpYdmMiLomq3bV8zrGNLZ+f4BD0PlL94MDC0VOn49r8ZKrr+W1bRW9b0rKlhDp613gOTS/OOCo+ycyQ7qTnv2BPK5lpeVRusO+q54Qp0RHfR8voCbyT3FnkqStsQUrI60ABHMETP7nllV68oZcqiFXGe2911CJu9girLCjyriFGFUlR7DYTd9+/GbuHi5A/yeQpLDW5+7f3opA0/TiBn5iyPWsYqqNq6bun

Try it Now!