Android RSA 與標準Java RSA實現區別

一開始在Android嘗試使用RSA,是直接參考文章:
http://blog.csdn.net/s464036801/article/details/7794599
該文章未能給出在Android上的正確的解決方案,但代碼整體是可用的,需要注意一下幾點的替換:
1、BASE64Decoder在Android中是不存在的,需用Base64替換,
BASE64Decoder base64Decoder= new BASE64Decoder();
byte[] buffer= base64Decoder.decodeBuffer(privateKeyStr);
替換為:
byte[] buffer= Base64.decode(DEFAULT_PUBLIC_KEY, Base64.DEFAULT);

2、對于String數據轉換為byte[],直接使用getBytes()是不合理的,
標準Java的解決方案是:DatatypeConverter.parseHexBinary(data);
但Android上沒有DatatypeConverter,所以要進行替換,
參考文章:
http://stackoverflow.com/questions/34342136/alternatives-a-datatypeconverter-in-androidsolved
在Android studio中加入依賴:compile 'commons-codec:commons-codec:1.3'
Hex.decodeHex(data.toCharArray())
替換為:
DatatypeConverter.parseHexBinary(data)

3、cipher= Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
做加密,但是一直無法與服務器那邊對接,而且每次生成的密文是一樣的。
后來參考文章:http://my.oschina.net/oschenxiaomo/blog/543199
使用cipher= Cipher.getInstance("RSA/ECB/PKCS1Padding")后就可以了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 引言 如今手機app五彩繽紛,確保手機用戶的數據安全是開發人員必須掌握的技巧,下面通過實例介紹DES在androi...
    freesan44閱讀 1,163評論 1 1
  • 概述 之前一直對加密相關的算法知之甚少,只知道類似DES、RSA等加密算法能對數據傳輸進行加密,且各種加密算法各有...
    Henryzhu閱讀 3,048評論 0 14
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,811評論 25 708
  • 1、不安全的隨機數生成,在CSRF TOKEN生成、password reset token生成等,會造成toke...
    nightmare丿閱讀 3,732評論 0 1
  • 這幾天睡眠一直不好。隨便寫點啥。 太陽越來越高,慵懶的撫慰著這個偏僻的小鎮。鎮中間有條不寬不窄的河,中間有兩座連接...
    楠苜閱讀 169評論 0 0