使用JSEncrypt進行分段加密

2021-10-03 06:23:10 字數 1383 閱讀 8077

近來在專案中給後台傳輸資料需要進行rsa加密,但是有的資料太長,金鑰是2048位的所以只能加密256個字元,於是便想採用分段加密方式進行加密。

因為加密的資料裡包含中英文,如果從採用charat來取出每個字元來判斷字元算占用的位元組實在是太麻煩,所以我才用base64將資料進行編碼,這樣原始資料就不會包含中文,即可進行簡單的長度劃分,從而直接去加密。

下面是我自己的分段加密方法

jsencrypt.prototype.encryptlong = function (string)  else 

var t1 = k.encrypt(str);

encryparray.push(hex2b64(t1));

}return encryparray;

}var t = k.encrypt(strings);

encryparray.push(hex2b64(t));

return encryparray;

} catch (ex)

};

我自己的分段解密方法

jsencrypt.prototype.decryptlong = function (encryparray) 

var strings = string(base64.decode(t3));

return t3;

} catch (ex)

};

由於採用jsencrypt進行加密時其最大加密長度是245,因為需要留出最小11個位元組來進行pkcs1pad2填充,所以我才以245的長度來進行資料的擷取加密,完成每一段的加密後在呼叫hex2b64()進行16進製製到base64的轉化,然後放到陣列中去,這樣我們便可以得到乙個有完整加密資料的陣列。

function pkcs1pad2(s,n) 

var ba = new array();

var i = s.length - 1;

while(i >= 0 && n > 0)

else if((c > 127) && (c < 2048))

else

} ba[--n] = 0;

var rng = new securerandom();

var x = new array();

while(n > 2)

ba[--n] = 2;

ba[--n] = 0;

return new biginteger(ba);

}

其中加密完資料以後最少會剩11個位元組來進行非零填充,而且填充完的第一位和第二位必然是0,2,第十一位必然是0,想必這就是解密的時候區分哪些是真實資料還是填充資料的依據。

postgres 使用函式批量分段刪除

一 postgres使用函式批量刪除資料萬級資料 create or replace function del logs datas returns text as declare b count int begin b count 10 while b count 0 loop delete fr...

使用MATLAB繪製分段函式實現

繪製分段函式也是很常見的需求,實現分段函式的繪製也有多種方式。以下面 分段函式為例,進行說明。方法一 直接根據分段函式的含義,根據x值的不同,相對應的函式值也不同,進行描點連線。x 0 0.1 5 y for xx x if xx 1.5 y y,0 elseif xx 1.5 xx 2 y y,x...

PHP 使用RSA分段加密,解密方法

檔案原始碼 rsa簽名類 注意 公鑰和私鑰必須是一行字串,並且去掉生成時的頭部和尾部 帶 的兩行,並且注意去掉最後一行的換行 class rsa 設定公鑰和私鑰 param string publickey 公鑰 param string privatekey 私鑰 public function ...