Base64
Base64 ã¨ã¯ããã¤ããªã¼ããããã¹ãã¸ã®ç¬¦å·åãè¡ãææ³ã®ã°ã«ã¼ãã§ããããã¤ããªã¼ãã¼ã¿ã 64 ãåºæ°ã¨ãã表ç¾ã«å¤æãããã¨ã§ãASCII æååã§è¡¨ããã¨ãã§ãã¾ããBase64 ã¨ããç¨èªã¯ã MIME ã® Content-Transfer-Encoding ã«ãããç¹å®ã®ç¬¦å·åæ¹å¼ã®ååã«ç±æ¥ãã¾ãã
Base64 ã¨ã³ã³ã¼ãæ¹å¼ã¯ãASCII ããã¹ãï¼ã¾ãã¯ä»»æã®ãã¤ããªã¼ãã¼ã¿ãåãå ¥ããã«ã¯ã¾ã ä¸åå㪠ASCII ã®ã¹ã¼ãã¼ã»ããï¼ããæ±ããªãã¡ãã£ã¢ä¸ã§ä¿åãéä¿¡ãè¡ãéã«ããã¤ããªã¼ãã¼ã¿ãã¨ã³ã³ã¼ãããããã«ä¸è¬çã«ä½¿ç¨ããã¾ããããã«ããã転éä¸ã«ãã¼ã¿ã夿´ããããã¨ãªãããã®ã¾ã¾ã®ç¶æ ã確å®ã«ä¿æãã¾ããBase64 ã®ä¸è¬çãªç¨éã¨ãã¦ã¯ã以ä¸ã®ãã®ãããã¾ãã
Base64 æå
"Base64" ã¨ããç¨èªãèªåèªèº«ã§å
·ä½çãªã¢ã«ã´ãªãºã ãåç
§ããããã«ä½¿ç¨ãããå ´åãããã¯ä¸è¬çã« RFC 4648, ã»ã¯ã·ã§ã³ 4 ã§æ¦èª¬ããã Base64 ã®ãã¼ã¸ã§ã³ãåç
§ãã¾ããããã¯ã64 鲿°ã表ãããã®ä»¥ä¸ã®ã¢ã«ãã¡ãããã¨ãããã¨ã¯å¥ã«ããã£ã³ã°æåã¨ã㦠= ã使ç¨ãã¾ãã
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
URL ããã³ãã¡ã¤ã«åã»ã¼ãã® Base64
ãã®å®ç¾©ã®ããããå¤å½¢ã¯ããã¡ã¤ã«åããã³ URL å¤ã§ä½¿ç¨ãã¦ãåé¡ã®ãªãæåã®ã¿ãå©ç¨ã§ãã¾ãã
RFC 4648, ã»ã¯ã·ã§ã³ 5 ã§å®ç¾©ããã¦ãããã®ãã¼ã¸ã§ã³ã§ã¯ãããã£ã³ã°ãçç¥ãã + 㨠/ ã - 㨠_ ã«ç½®ãæãã¾ãã
ãã¹é¨åã¾ãã¯ã¯ã¨ãªã¼å¼æ°ã«ãã¼ã¿ãæ ¼ç´ããªãå ´åã¯ããã®ã¨ã³ã³ã¼ãæ¹å¼ã¯å¿ è¦ããã¾ãããä¾ãã°ãdata URL ã¯ã©ã¡ãããªãã®ã§ãæ¨æºã® Base64 ã¨ã³ã³ã¼ãã使ç¨ãããã¨ãã§ãã¾ãã
符å·åã«ãããµã¤ãºã®å¢å
Base64 ã®ããããã® 1 æåã¯ãã¼ã¿ã® 6 ãããåï¼64 = 26ï¼ã表ãã¾ãããã®ãããå ¥åãããæååããã¤ããªã¼ãã¡ã¤ã«ã«å«ã¾ãã 3 ãã¤ãï¼3Ã8 ããã = 24 ãããï¼ã¯ã4 æ¡ã® 6 ãããã® Base64 ã§è¡¨ããã¾ãï¼4Ã6 = 24 ãããï¼ã
ã¤ã¾ããæååããã¡ã¤ã«ã Base64 ã«ããã¨ãé常ããã®æååã®ã½ã¼ã¹ãããããã 3 åã® 1 大ãããªãã¾ãï¼æ£ç¢ºãªãµã¤ãºã®å¢å ã¯ãæååã®çµ¶å¯¾é·ããã®é·ãã®ã¢ã¸ã¥ã 3ãããã£ã³ã°æåã使ç¨ãã¦ãããã©ãããªã©ããã¾ãã¾ãªè¦å ã«ä¾åãã¾ãï¼ã
æ«å°¾ã®å¡
base64 æåå㯠4 æåã®å¡ã«åå²ãããã¨ãã§ããæå¾ã®å¡ã¯ 4 æåæªæºã§ããã¾ãã¾ãããæå¾ã®å¡ã¯ãæ£ç¢ºã« 4 æåã®é·ãã«ãªãããã« = æåã§åãããã¾ããåãæåãé¤ãã¦ãæå¾ã®å¡ã¯æ¬¡ã®ããããã«ãªãã¾ãã
- 2 æåï¼1 ãã¤ãï¼8 ãããï¼ã®ãã¼ã¿ã表ã 12 ããããã¨ã³ã³ã¼ããã¾ãã
- 3 æåï¼2 ãã¤ãï¼16 ãããï¼ã®ãã¼ã¿ã表ã 18 ããããã¨ã³ã³ã¼ããã¾ãã
- 4 æåï¼3 ãã¤ãï¼24 ãããï¼ã®ãã¼ã¿ã表ã 24 ããããã¨ã³ã³ã¼ããã¾ãã
æåã® 2 ã¤ã®ã±ã¼ã¹ã§ã¯ãæåã¯ãã¼ã¿ã表ããªã 4 ã¾ã㯠2 ã®ä½åãªæ«å°¾ããããæã¤ãã¨ãããã¾ãããã®å ´åã RFC 4648 ã§ã¯ãã¨ã³ã³ã¼ãã¼ã¯ãããã®ãããã 0 ã«è¨å®ãããã³ã¼ãã¼ã¯ 0 以å¤ã®å ´åã«ãªãã·ã§ã³ã§ã¨ã©ã¼ãçºçãããã¨ãè¦æ±ãã¦ãã¾ããä¾ãã°ãã¨ã³ã³ã¼ãããããã¼ã¿ãåä¸ã®ãã¤ã 0b01010101 ã®å ´åã2 ã¤ã®æå 0b010101 (V) ããã³ 0b010000 (Q) ãå¿
è¦ã§ããã2 ã¤ç®ã®æåã«ã¯ 4 ãããã®æ«å°¾ãããã 0 ã«è¨å®ããã¾ããVR== ï¼2 æåç®ã 0b010001 ã表ãï¼ããã³ã¼ãããã¨ãæè¡çã«ã¯åããã¤ã 0b01010101 ã«ãªãã¾ãããæ«å°¾ã®ãããã 0 ã§ã¯ãªãããããã³ã¼ãã¯ã¨ã©ã¼ãçºçããå ´åãããã¾ãã
JavaScript ã®å¯¾å¿
Uint8Array ã¯ã©ã¹ã¯ã Uint8Array.fromBase64()ãUint8Array.prototype.toBase64()ãUint8Array.prototype.setFromBase64() ã®åã¡ã½ããã§ã base64 æååã¨ã®å¤ææ©è½ãæä¾ãã¦ãã¾ãã
Browsers also natively provide two JavaScript functions for decoding and encoding Base64 strings:
Window.btoa()ï¼ã¯ã¼ã«ã¼ã§ãå©ç¨å¯è½ï¼: ãã¤ããªã¼ãã¼ã¿ã®æååãã Base64 ã¨ã³ã³ã¼ãæ¹å¼ã® ASCII æååã使ãã¾ãï¼"btoa" 㯠"binary to ASCII" ã¨èªãã§ãã ããï¼ãWindow.atob()ï¼ã¯ã¼ã«ã¼ã§ãå©ç¨å¯è½ï¼: Base64 ã¨ã³ã³ã¼ãæ¹å¼ã®æååããã³ã¼ããã¾ãï¼"atob" 㯠"ASCII to binary" ã¨èªãã§ãã ããï¼ã
ã¡ã¢:
Base64 ã¯ããã¹ãã¨ã³ã³ã¼ãã§ã¯ãªããã¤ããªã¼ã¨ã³ã³ã¼ãæ¹å¼ã§ãããbtoa 㨠atob ã¯ã¦ã§ããã©ãããã©ã¼ã ããã¤ããªã¼ãã¼ã¿åã«å¯¾å¿ããåã«è¿½å ããã¾ããããã®çµæã2 ã¤ã®é¢æ°ã¯æååã使ç¨ãã¦ãã¤ããªã¼ãã¼ã¿ã表ãã¦ãããåæåã®ã³ã¼ããã¤ã³ããåãã¤ãã®å¤ã表ãã¾ãããã®ãããbtoa ã¯ä»»æã®ããã¹ããã¼ã¿ãã¨ã³ã³ã¼ãããããã«ä½¿ç¨ãããã¨ãã§ãã¾ããä¾ãã°ãããã¹ãã HTML ææ¸ã® Base64 data: URL ã使ããå ´åãªã©ã§ãã
ãããããã¤ãã¨ã³ã¼ããã¤ã³ãã®å¯¾å¿ã確å®ã«æãç«ã¤ã®ã¯ 0x7f ã¾ã§ã®ã³ã¼ããã¤ã³ãã ãã§ããããã«ã0xff ãè¶
ããã³ã¼ããã¤ã³ãã¯ã1 ãã¤ãã®æå¤§å¤ãè¶
ããããã« btoa ã§ã¨ã©ã¼ãçºçãã¾ããæ¬¡ã®ç¯ã§ã¯ãä»»æã® Unicode ããã¹ããã¨ã³ã³ã¼ãããã¨ãã«ããã®å¶éãåé¿ããããã«ã©ã®ããã«ä½æ¥ãããã«ã¤ãã¦è©³ãã説æãã¾ãã