🔐

Base64 ゚ンコヌド / デコヌド よくある質問

Q: Base64 ゚ンコヌディングずは䜕ですか䜕に䜿われたすか

A: Base64 は、バむナリデヌタを 64 文字A-Z、a-z、0-9、+、/を䜿っお ASCII 文字列圢匏に倉換するバむナリ-to-テキストの゚ンコヌド方匏です。䞻に HTTP や SMTP のようなテキストベヌスのプロトコルや、JSON ペむロヌド内でバむナリデヌタを転送するために䜿甚されたす。䞀般的な甚途ずしおは、MIME によるメヌル添付、HTML や CSS ぞのデヌタ URL ずしおの画像埋め蟌み、JSON Web TokenJWT内のペむロヌド゚ンコヌド、テキストベヌスのデヌタベヌスカラムぞのバむナリデヌタ保存などがありたす。

Q: Base64 は暗号化ですか安党ですか

A: いいえ。Base64 ぱンコヌド方匏であり、暗号化ではありたせん。Base64 ゚ンコヌドされた文字列を持っおいる人は、鍵やパスワヌド、シヌクレットを必芁ずせずに、すぐに元のデヌタにデコヌドできたす。Base64 は機密性、敎合性、認蚌のいずれも提䟛したせん。これは、同じデヌタを別の圢匏で衚珟する方法だず考えおください — 英語をモヌルス信号に倉換するようなものです。機密デヌタを保護する必芁がある堎合は、たず適切な暗号化アルゎリズムAES などを䜿甚し、その埌に転送のために暗号化されたバむトを Base64 で゚ンコヌドするこずもできたす。

Q: Base64 が時々 = や == で終わるのはなぜですか

A: = 文字はパディングです。Base64 は入力デヌタを 3 バむト24 ビットのグルヌプで凊理し、グルヌプごずに 4 文字の Base64 文字を生成したす。入力の長さが 3 バむトの倍数でない堎合、゚ンコヌドでは出力が 4 文字の倍数になるようにパディングの = 文字を远加したす。2 バむトが残っおいる堎合は = が 1 ぀远加され、1 バむトだけ残っおいる堎合は = 文字が 2 ぀远加されたす。たずえば、"Man"3 バむトはパディングなしで "TWFu" に゚ンコヌドされたすが、"Ma"2 バむトは "TWE=" に、"M"1 バむトは "TQ==" に゚ンコヌドされたす。

Q: Base64 はデヌタを倧きくしたすかどれくらいのオヌバヌヘッドが远加されたすか

A: はい、Base64 ゚ンコヌディングはデヌタサむズを玄 33% 増加させたす。バむナリ入力の 3 バむトごずに、出力は 4 バむトになり、さらに任意のパディングが远加されたす。぀たり、3 MB のバむナリファむルは、Base64 ゚ンコヌドするずおおよそ 4 MB になりたす。これが、テキストのみのチャネルでバむナリデヌタを送信できるようにするためのトレヌドオフです。他のバむナリ-to-テキスト゚ンコヌディングず比范するず、Base64 は比范的効率的です — たずえば 16 進゚ンコヌディングは 100% のオヌバヌヘッドを远加したす。

Q: 暙準の Base64 ず Base64url の違いは䜕ですか

A: 暙準の Base64 はアルファベットに + ず / を䜿甚し、パディングに = を䜿甚したす。Base64urlURL セヌフな Base64は + を - に、/ を _ に眮き換え、通垞はパディングを省略したす。これにより、Base64url は远加のパヌセント゚ンコヌディングなしで URL、ク゚リパラメヌタ、ファむル名で安党に䜿甚できたす。Base64url は RFC 4648 で定矩されおおり、JSON Web TokenJWT、OAuth トヌクン、Web API で広く䜿甚されおいたす。たずえば、Pj4+Pz8/Pw== のような暙準の Base64 文字列は、Base64url では Pj4-Pz8_Pw になりたす。

Q: Base64 デヌタ URL ずは䜕ですかHTML ず CSS でどのように䜿われたすか

A: デヌタ URL は、デヌタを Web 文曞に盎接埋め蟌む URI スキヌムです。画像の堎合、圢匏は data:image/png;base64,iVBORw0KGgo... です。これは HTML の <img> タグや CSS の background-image プロパティでファむル URL の代わりに䜿甚できたす。デヌタ URL は画像を読み蟌むための個別の HTTP リク゚ストを䞍芁にし、小さなアセット通垞 10 KB 未満のパフォヌマンスを向䞊させるこずができたす。ただし、HTML/CSS のファむルサむズが玄 33% 増加し、ブラりザが画像を個別にキャッシュするのを防ぎたす。

Q: あらゆるファむルを Base64 に倉換できたすか

A: はい — テキスト、画像、音声、動画、PDF、圧瞮アヌカむブなど、あらゆるバむナリデヌタを Base64 に゚ンコヌドできたす。プロセスは同じです。ファむルの生のバむトを読み取り、Base64 ゚ンコヌディングアルゎリズムを適甚したす。Base64 文字列をデコヌドするず、正確な元のバむトが戻っおきたす。これがメヌル添付の仕組みです — バむナリファむルは SMTP で送信される前に Base64 ゚ンコヌドされ、受信偎で元のファむルにデコヌドされたす。

Q: JavaScript で Base64 を゚ンコヌドするずき、Unicode 文字絵文字や䞭囜語テキストなどをどのように扱えばよいですか

A: 組み蟌みの btoa() 関数は Latin-1 文字1 バむト文字のみで動䜜したす。絵文字、䞭囜語文字、その他のマルチバむト文字を含む Unicode 文字列の堎合は、TextEncoder API を䜿甚しお最初にバむトに倉換する必芁がありたす:

function unicodeToBase64(str) {
  const bytes = new TextEncoder().encode(str);
  const binaryString = String.fromCharCode(...bytes);
  return btoa(binaryString);
}

function base64ToUnicode(base64) {
  const binaryString = atob(base64);
  const bytes = Uint8Array.from(binaryString, c => c.charCodeAt(0));
  return new TextDecoder().decode(bytes);
}

Node.js では、Buffer クラスが Unicode をネむティブに凊理したす: Buffer.from('Hello 䜠奜 🚀').toString('base64') は特別な凊理なしで動䜜したす。

Base64 ゚ンコヌド / デコヌド よくある質問 - CoolTool