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') ã¯ç¹å¥ãªåŠçãªãã§åäœããŸãã