方法1:
rsa 是常用的非對稱加密演算法。最近使用時卻出現了「不正確的長度」的異常,研究發現是由於待加密的資料超長所致。
.net framework 中提供的 rsa 演算法規定:
待加密的位元組數不能超過金鑰的長度值除以 8 再減去 11(即:rsacryptoserviceprovider.keysize / 8 - 11),而加密後得到密文的位元組數,正好是金鑰的長度值除以 8(即:rsacryptoserviceprovider.keysize / 8)。
所以,如果要加密較長的資料,則可以採用分段加解密的方式,實現方式如下:
**:namespace macroresolute.rsacryptoservice
return convert.tobase64string(crypstream.toarray(), base64formattingoptions.none);}}
}public static string decrypt(this string ciphertext)
return rsacrypto.encoder.getstring(plaistream.toarray());}}
}private static x509certificate2 retrievex509certificate()}}
方法2:
rsacryptoserviceprovider rsa = new
rsacryptoserviceprovider();
byte data = ........;
//要加密的資料
string publickey = .... ; //獲取公鑰
rsa.fromxmlstring(publickey);
int keysize = rsa.keysize / 8;
int buffersize = keysize - 11;
byte buffer = new
byte[buffersize];
memorystream msinput = new
memorystream(data);
memorystream msouput = new
memorystream();
int readlen = msinput.read(buffer, 0,
buffersize);
while(readlen > 0)
msinput.close();
byte result = msoutput.toarray();
//得到加密結果
msoutput.close();
rsa.clear();
解密時肯定也要使用分段解密,演算法如下:
rsacryptoserviceprovider rsa = new
rsacryptoserviceprovider();
byte key = .....; //載入私鑰
string privatekey =
encoding.ascii.getstring(key);
byte dataenc = ...; //載入密文
rsa.fromxmlstring(privatekey);
int keysize = rsa.keysize / 8;
byte
buffer = new byte[keysize];
memorystream msinput = new
memorystream(dataenc );
memorystream msouput = new
memorystream();
int readlen = msinput.read(buffer, 0,
keysize);
while(readlen > 0)
msinput.close();
byte result = msoutput.toarray();
//得到解密結果
msoutput.close();
rsa.clear();
如何解決訪問頁面路徑不正確的問題
在開發過程中,有時我們需要呼叫一下平台封裝好的某個頁面,如果我們指定完url路徑後發現頁面沒有載入出來 頁面是空白 那麼很可能是路徑不正確,這時我們可以把滑鼠放到空白頁面,然後右鍵,選擇 檢視框架的源 這時我們便可以看到位址列中的位址比如 view source http localhost 808...
cxf解決多網絡卡的ip獲取不正確的問題
今天幫助解決乙個問題,cxf對外發布webservice的時候,由於伺服器是多網絡卡環境,從wsdl返回的ip是乙個內外位址,解析出錯,所以後來在網上查了下,需要設定publishedendpointurl設定網域名稱即可。用ip的時候wsdl如下 如果在spring裡面設定如下配置,即可 最終返回...
vue打包靜態資源路徑不正確的解決方案
vue打包靜態資源路徑不正確的解決辦法 vue專案完成打包上線的時候很多人都會碰到靜態資源找不到的問題,常見的有兩個 1 js,css路徑不對 解決辦法 開啟config index.js,將其中的assetspublicpath值改為 2 css中引用的資源找不到 我的login.vue檔案中通過...