近來在專案中給後台傳輸資料需要進行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 ...