1. 程式人生 > >Base64編碼解碼詳解

Base64編碼解碼詳解

npm:

In Browser

<script src="base64.js"></script>

node.js

var Base64 = require('js-base64').Base64;

es6+

import { Base64 } from 'js-base64';

npm

$ npm install --save js-base64

SYNOPSIS

Base64.encode('dankogai');  // ZGFua29nYWk=Base64.encode('小飼弾');    // 5bCP6aO85by+Base64.encodeURI('小飼弾'); // 5bCP6aO85by-
Base64.decode('ZGFua29nYWk=');  // dankogaiBase64.decode('5bCP6aO85by+');  // 小飼弾// note .decodeURI() is unnecessary since it accepts both flavorsBase64.decode('5bCP6aO85by-');  // 小飼弾

String Extension for ES5

if (Base64.extendString) {    // you have to explicitly extend String.prototype    Base64.extendString
()
;
    // once extended, you can do the following    'dankogai'.toBase64();       // ZGFua29nYWk=    '小飼弾'.toBase64();         // 5bCP6aO85by+    '小飼弾'.toBase64(true);     // 5bCP6aO85by-    '小飼弾'.toBase64URI();      // 5bCP6aO85by-    'ZGFua29nYWk='.fromBase64(); // dankogai    '5bCP6aO85by+'.fromBase64(); // 小飼弾
    '5bCP6aO85by-'.fromBase64(); // 小飼弾}

TypeScript

TypeScript 2.0 type definition was added to the DefinitelyTyped repository.

$ npm install --save @types/js-base64

1.加密解密方法使用:

[javascript] view plain copy
  1. //1.加密
  2. var str = '124中文內容';  
  3. var base = new Base64();  
  4. var result = base.encode(str);  
  5. //document.write(result);
  6. //2.解密
  7. var result2 = base.decode(result);  
  8. document.write(result2);  

2.加密、解密演算法封裝:

[javascript] view plain copy
  1. /** 
  2. * 
  3. *  Base64 encode / decode 
  4. * 
  5. *  @author haitao.tu 
  6. *  @date   2010-04-26 
  7. *  @email  [email protected] 
  8. * 
  9. */
  10. function Base64() {  
  11.     // private property
  12.     _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";  
  13.     // public method for encoding
  14.     this.encode = function (input) {  
  15.         var output = "";  
  16.         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  
  17.         var i = 0;  
  18.         input = _utf8_encode(input);  
  19.         while (i < input.length) {  
  20.             chr1 = input.charCodeAt(i++);  
  21.             chr2 = input.charCodeAt(i++);  
  22.             chr3 = input.charCodeAt(i++);  
  23.             enc1 = chr1 >> 2;  
  24.             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
  25.             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
  26.             enc4 = chr3 & 63;  
  27.             if (isNaN(chr2)) {  
  28.                 enc3 = enc4 = 64;  
  29.             } elseif (isNaN(chr3)) {  
  30.                 enc4 = 64;  
  31.             }  
  32.             output = output +  
  33.             _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +  
  34.             _keyStr.charAt(enc3) + _keyStr.charAt(enc4);  
  35.         }  
  36.         return output;  
  37.     }  
  38.     // public method for decoding
  39.     this.decode = function (input) {  
  40.         var output = "";  
  41.         var chr1, chr2, chr3;  
  42.         var enc1, enc2, enc3, enc4;  
  43.         var i = 0;  
  44.         input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
  45.         while (i < input.length) {  
  46.             enc1 = _keyStr.indexOf(input.charAt(i++));  
  47.             enc2 = _keyStr.indexOf(input.charAt(i++));  
  48.             enc3 = _keyStr.indexOf(input.charAt(i++));  
  49.             enc4 = _keyStr.indexOf(input.charAt(i++));  
  50.             chr1 = (enc1 << 2) | (enc2 >> 4);  
  51.             chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
  52.             chr3 = ((enc3 & 3) << 6) | enc4;  
  53.             output = output + String.fromCharCode(chr1);  
  54.             if (enc3 != 64) {  
  55.                 output = output + String.fromCharCode(chr2);  
  56.             }  
  57.             if (enc4 != 64) {  
  58.                 output = output + String.fromCharCode(chr3);  
  59.             }  
  60.         }  
  61.         output = _utf8_decode(output);  
  62.         return output;  
  63.     }  
  64.     // private method for UTF-8 encoding
  65.     _utf8_encode = function (string) {  
  66.         string = string.replace(/\r\n/g,"\n");  
  67.         var utftext = "";  
  68.         for (var n = 0; n < string.length; n++) {  
  69.             var c = string.charCodeAt(n);  
  70.             if (c < 128) {  
  71.                 utftext += String.fromCharCode(c);  
  72.             } elseif((c > 127) && (c < 2048)) {  
  73.                 utftext += String.fromCharCode((c >> 6) | 192);  
  74.                 utftext += String.fromCharCode((c & 63) | 128);  
  75.             } else {  
  76.                 utftext += String.fromCharCode((c >> 12) | 224);  
  77.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
  78.                 utftext += String.fromCharCode((c & 63) | 128);  
  79.             }  
  80.         }  
  81.         return utftext;  
  82.     }  
  83.     // private method for UTF-8 decoding
  84.     _utf8_decode = function (utftext) {  
  85.         var string = "";  
  86.         var i = 0;  
  87.         var c = c1 = c2 = 0;  
  88.         while ( i < utftext.length ) {  
  89.             c = utftext.charCodeAt(i);  
  90.             if (c < 128) {  
  91.                 string += String.fromCharCode(c);  
  92.                 i++;  
  93.             } elseif((c > 191) && (c < 224)) {  
  94.                 c2 = utftext.charCodeAt(i+1);  
  95.                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
  96.                 i += 2;  
  97.             } else {  
  98.                 c2 = utftext.charCodeAt(i+1);  
  99.                 c3 = utftext.charCodeAt(i+2);  
  100. 相關推薦

    Base64編碼解碼

    npm:In Browser<script src="base64.js"></script>node.jsvar Base64 = require('js-base64').B

    PHP和javascript中url編碼解碼

    http 遇到 註意 spa color 空格 www. col test 在實際開發中,我們可能會遇到路徑編碼解碼的問題,下面總結了一下: PHP中:   1、urlencode(編碼),urldecode(解碼) $a = urlencode(‘http://www.

    JS中encodeURIComponent(URL)編碼與decodeURIComponent(URL)解碼

    (1)   encodeURIComponent(url) 函式 定義和用法        encodeURIComponent() 函式可把字串作為 URI 元件進行編碼。 語法     

    JS實現—Base64編碼解碼,帶16進制顯示

    ech encode break 復制代碼 bre zab idt pts image 代碼如下: <!DOCTYPE html> <html> <head> <meta name="viewport" conte

    Css中路徑data:image/png;base64的用法 (轉載)

    javascrip base64編碼 asc cda 文件的 color 情況 ont 背景圖片 大家可能註意到了,網頁上有些圖片的src或css背景圖片的url後面跟了一大串字符,比如: background-image:url(data:image/png;bas

    [轉載]Python3編碼問題

    alt ror 清晰 handle 種類型 對應關系 and 技術 字節數 原文:Python3的編碼問題 Python3 最重要的一項改進之一就是解決了 Python2 中字符串與字符編碼遺留下來的這個大坑。Python 編碼為什麽那麽蛋疼?已經介紹過 Python2 字

    編碼原理(一)----簡介

    傳輸 冗余 shadow 溫習 自己 ext 區域 興趣 圖片 本節開始,給大家系列介紹一下關於編碼原理的相關知識,可能會涉及到部分算法的知識,也就意味著會相對枯燥一些,筆者盡自己所能,努力的追求簡單,同時把原理清晰的呈現給大家。 一、編碼 編碼已經是一個老聲長談的

    編碼原理(二)---變換編碼

    mar 關於 詳解 tex 描述 原理 學習 編碼原理 watermark 本篇介紹編碼原理中的變換編碼。 一、變換的目的和作用: 變換編碼的作用是將空間域描述的圖像信號變換到頻率域,然後對變換後的系數進行編碼處理。一般來說,圖像在空間上具有較強的相關性,變換到頻率

    編碼原理(三)---量化

    進一步 mark 新的 dct 說明 一點 註意 cto water 本節開始介紹編碼過程中的量化環節。還記得上一篇的變換嗎?變換之後得到了一個新的矩陣,一個經過從空域變換到頻域的一個矩陣。那麽,量化呢,就是基於變換後得到的矩陣,再做進一步的處理,本質也就是進一步的壓縮。

    編碼原理(四)---之字形掃描

    便是 集中 img 詳解 工作 -- 漢字 如何 編碼原理 上一篇我們講到,經過量化後得到了諸多零值和整數值,本篇接下來講講編碼過程中過對這些值如何組織和處理,那就是ZigZag掃描嘍。 一、簡介 ZigZag掃描也稱作之字形掃描,何以得此稱謂,是因為其掃描的路徑特

    linux下進行base64編碼解碼

    image 分享 clas 技術分享 post blog div img 技術 1.編碼 2.解碼 linux下進行base64編碼解碼

    Java Base64 編碼解碼方案總結

    缺點 system 類別 字串 轉換 一點 text encoder bin Base64是一種能將任意Binary資料用64種字元組合成字串的方法,而這個Binary資料和字串資料彼此之間是可以互相轉換的,十分方便。在實際應用上,Base64除了能將Binary資料可視化

    GB2312、GBK、ISO-8859-1、ASCII碼、Unicode、UTF-8各種編碼格式(終於搞懂了)

    從計算機編碼歷史這條主線來理解各種編碼格式 計算機發明於歐美語系世界,最初只需要處理英文字母的編碼就可以了,也就是ISO-8859-1編碼規範;後來傳到中國,原有的編碼規範不能識別中文,於是發展出了GB2312、GBK等格式來編碼中文,同樣的對於阿拉伯語系、德俄西班牙之類的也會有其相應的編碼

    java 按位元組讀寫二進位制檔案(Base64編碼解碼

    最近在做專案時遇到這樣一個需求:依次讀取本地資料夾裡所有檔案的內容,轉為JSON,傳送到ActiveMQ的訊息佇列, 然後從MQ的訊息佇列上獲取檔案的資訊,依次寫到本地。常見的檔案型別,比如.txt 和.png等檔案的讀寫並不難。但是,我剛才所提到的需求,如果用常規的方法去讀寫,比如按位元組讀取檔案內容

    java 按字節讀寫二進制文件(Base64編碼解碼

    h+ lee bean 字節數組 inpu 讀取 write bytearray 轉換工具類 最近在做項目時遇到這樣一個需求:依次讀取本地文件夾裏所有文件的內容,轉為JSON,發送到ActiveMQ的消息隊列, 然後從MQ的消息隊列上獲取文件的信息,依次寫到本地。常見的文

    python2,python3中的base64編碼解碼

    Base64編碼是一種“防君子不防小人”的編碼方式。廣泛應用於MIME協議,作為電子郵件的傳輸編碼,生成的編碼可逆,後一兩位可能有“=”,生成的編碼都是ascii字元。 優點:速度快,ascii字元,肉眼不可理解 缺點:編碼比較長,非常容易被破解,僅適用於加密非關鍵資訊的場

    FFmpeg解碼(原理與函式使用說明)

    視訊解碼知識 •純淨的視訊解碼流程 ▫壓縮編碼資料->畫素資料。 ▫例如解碼H.264,就是“H.264碼流->YUV”。 •一般的視訊解碼流程 ▫視訊碼流一般儲存在一定的封裝格式(例如MP4、AVI等)中。封裝格式中通常還包含音訊碼流等內容。 ▫對於封裝格式中的

    JavaScript base64編碼解碼

     ----script------   1a你 MWHkvaA=  var b = new Base64();     var eid = b.encode('1a你');     console.log(eid); &nbs

    java網路圖片Base64編碼解碼

    編碼 /** * 線上圖片Base64編碼 * @param link 線上圖片請求地址 * @return * @throws IOException */ public static String toBase

    ASP對base64編碼解碼程式

    針對郵件退信,內容進行解碼!網上收集,具體出處不詳! <form name="form1" method="post" action="">  <table width="95%" border="0" align="center" cellpadding=