2013-10-22 39 views
0

我正在爲每個變量添加值以獲取加密郵件。所有硬編碼用於測試目的。RSA加密 - 嘗試加密郵件返回錯誤的值

返回值?????應該返回538 1729 1328 1328 2146。我有什麼錯誤嗎?這是我用我的代碼唯一的問題。

public static void main(String[] args){ 
    int p = 61; 
    int q = 37; 
    int pq = p * q; 
    int phiPQ = (p - 1) * (q - 1); 
    int e = 7; 
    int d = 1543; 
    String message = encryptMsg("hello", pq, e); 
    System.out.println(message); 
} 

public static String encryptMsg(String msg, int pq, int e){ 
    BigInteger bE = new BigInteger(Integer.toString(e)); 
    BigInteger bPQ = new BigInteger(Integer.toString(pq)); 
    String encryptedMsg = ""; 
    for(int i = 0; i < msg.length(); i++){ 
     BigInteger m = new BigInteger(Integer.toString(msg.charAt(i))); 
     BigInteger bC = m.modPow(bE, bPQ); 
     encryptedMsg += " " + (char)bC.intValue(); 
    } 
    return encryptedMsg; 
} 
+0

Btw:結果的第一個值是1039,而不是538。 – LostAvatar

回答

1

我想你可能想

encryptedMsg +=" " + bC.toString(); 

目前你鑄造整數爲字符,所以又回到unicode的,我想,而你似乎在期待什麼是整數作爲字符串。