2014-03-05 18 views
1

我試圖模擬RSA加密和解密我想加密方法從字符串字節數組,然後串

  1. 採取串
  2. 將其轉換爲字節[]
  3. 做RSA功能(我將在下面的代碼顯示)
  4. 返回字節[]作爲一個字符串

我現在已經和它的作品但重ceiving和返回的byte [](不是字符串)

public byte[] encrypt (byte[] message){ 

    byte [] t= ((new BigInteger(message)).modPow(e, N)).toByteArray(); 

    return (t); 

} 

解密方法,我希望它

  1. 接收加密()返回的字符串
  2. 將其轉換爲字節[]
  3. 在字節[]上執行RSA以獲得原始字節[]
  4. 返回原始字符串 我到目前爲止的內容

    public byte [] decrypt (byte [] message) { 
    
        byte[] data= ((new BigInteger(message)).modPow(d, N)).toByteArray(); 
    
        return data; 
         } 
    

這2種方法的工作,但我需要在我的主類和使用的byte [] Str.getbyte()來加密和新的字符串(字節[])加密來創建一個byte []。 ....

我想我的主要處理只有字符串。當我使用這樣的解密(字符串消息)代碼

public String decrypt (String message) { 

     byte[] data= ((new BigInteger(message.getBytes())).modPow(d, N)).toByteArray(); 

    return data.toString(); 
    } 

它不給我原來的文本,因爲它與解密(字節[]消息)的做法,但它返回像[email protected]

我我確定我錯過了將文本轉換爲byte []的相關內容,反之亦然,但我不確定我錯過了什麼。

我很樂意聽取您的意見。

(對不起,我的英語)

+1

查看Object#toString()方法以及它返回的數組類型。 –

+0

使用'new String(data)'而不是'data.toString();' – 2014-03-05 07:45:12

回答

1

加密結果字符串值的原因是什麼?如果您嘗試搜索:byte[] to String java,您可以輕鬆地將字節[]轉換爲字符串並將其反轉。 但是有真正的理由去做嗎?

也許你想是這樣的:

public byte[] encrypt (String message); 
public String decrypt (byte[] message); 

然後,你將用字符串輸入操作,並能夠得到的字符串解密結果。但是沒有理由在字符串中使用加密數據進行操作,它看起來像是冗餘操作:您的字符串將無法讀取,並且算法與byte []一起工作。只需轉換加密輸入和解密輸出。

+0

感謝您的評論,主要原因是讓main(在我的程序中是一個接口)只處理字符串。我現在用Byte []數組完美地工作,但我想知道爲什麼它不能使用字符串。 – user3382285

+0

是的,我編輯我的答案。 –

+0

非常感謝。實際上這是一個冗餘操作,因爲我想顯示不可讀的字符串,正如我在我的問題中所說的那樣,我想模擬RSA技術。我的應用程序顯示了「明文」如何變成不可讀的文本,然後回到原始文本。 – user3382285

相關問題