2011-12-12 206 views
0

如何使用N,P,Q和公鑰/私鑰e和d來自己加密/解密字符串?RSA字符串加密解密

我試圖將每個單獨的字符鑄造爲一個int,執行計算並將其轉換回爲char,但我似乎在爲不同的字符加密後得到相同的字符。

也就是說,這些字符似乎並不是一對一映射的。

for(int i = 0; i < message.length() - 1; i++) 
{ 
    ori = (int)message[ i ]; 

    for(int j = 0; j < e; j++) 
     ori = ((int)message[ i ] * ori) % N; 

    message[ i ] = (char)ori; 
} 

N是兩個素數的乘積,e是我試圖加密的數的指數。

+2

請顯示爲您的代碼。 – Femaref

回答

1

有些事情要注意一下:

  1. 你不養它到E,你養它到E + 1,因爲你開始與消息[I]到1,然後乘以通過消息[i]多次,給e + 1發送消息[i]。
  2. 當你將它作爲字符進行轉換時,這不太可能奏效,因爲沒有理由相信它會在字符範圍內。除非N小於255,否則大多數情況下它會大於255。
  3. 通常,您不用這種方式編碼帶有RSA的字符串,因爲每個字符串都將編碼爲唯一的數字,所以它會成爲容易受到信件頻率的攻擊。相反,實際的協議幾乎總是通過用RSA對密鑰進行編碼然後使用密鑰使用對稱密鑰塊或流密碼對消息進行編碼來處理這個問題。