Base64は暗号化ではない ― PowerShellで「戻せる」を目で確認する

PowerShellカテゴリを表すパンダのイラスト PowerShell

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。.NETのBase64変換APIを確認し、ダミー文字列だけでエンコードと復元を観察できる形に整理しています。

検証ステータス:📘 .NET公式仕様確認済み・実機未確認

Base64はデータを文字列で運びやすくする符号化です。鍵を使わず元へ戻せるので、秘密を守る暗号化の代わりにはなりません。

まず試す

$text = 'papanda-demo'
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($text))
$b64
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64))

ここを見る

2行目の見た目は変わりますが、最後に papanda-demo がそのまま戻れば成功です。パスワードも同じように戻せるため、Base64化だけで安全になったとは言えません。

1か所変えてみる

papanda-demoパンダ に変えます。UTF-8のbyte列をBase64へ変換しているので、日本語でも往復できることを確認できます。

なぜそうなる

Base64は3byteを4文字相当へ写像する表現方式です。復号鍵は存在せず、変換規則を知っていれば誰でも戻せます。

graph LR
A[文字列] --> B[UTF-8 bytes]
B --> C[Base64]
C --> D[bytesへ復元]
D --> E[元の文字列]

仕事で使うなら

メールやJSONなどbinaryを直接扱いにくい場所での表現には便利です。一方、tokenやpasswordをBase64にして設定ファイルへ置くことを「暗号化」と呼ばないようにします。秘密の保護にはOSの資格情報機構、秘密管理サービス、適切な暗号方式を使います。

Microsoft .NET Convert.ToBase64String: https://learn.microsoft.com/dotnet/api/system.convert.tobase64string

Microsoft .NET Convert.FromBase64String: https://learn.microsoft.com/dotnet/api/system.convert.frombase64string

文書情報

記事タイトル
Base64は暗号化ではない ― PowerShellで「戻せる」を目で確認する
作成日
更新日
Source URL
https://papanda925.com/?p=15423

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました