2012-10-29 82 views
1

我對公鑰密碼學背後的想法非常着迷,並坐下來用我自己的Client <- Server -> Client例子使用Java。只需簡單地來回編碼使用最終祕密的消息。執行公鑰加密算法背後的數學

我最初遇到的問題是技術之一。在演示中,筆者決定方程的結果:

3^(24 * 54) mod 17

一個值:

= 1

但我的問題是,怎麼將接近這樣的計算Java中大量?

或者是提供的示例只是簡單的說明:示例,而不是實際的計算方法?

+1

模冪。如果沒有人闡述,直到我從晚餐回來,我會。 –

+1

維基百科鏈接:http://en.wikipedia.org/wiki/Modular_exponentiation – assylias

回答

3

它必須有一個很好的數學原因(Daniel Fischer似乎有一個)。在任何情況下,可以使用一個BigInteger:

public static void main(String[] args) { 
    BigInteger bi = new BigInteger("3") 
      .modPow(new BigInteger(String.valueOf(24 * 54)), new BigInteger("17")); 
    System.out.println(bi); 
} 

,其通過重複平方輸出1.

+1

有趣!我還發現'valueOf()'靜態方法 - 它似乎稍微容易使用:'BigInteger.valueOf(3).modPow(BigInteger.valueOf(24 * 54),BigInteger.valueOf(17))' –

+0

重點稍微簡單一點。重物很重。 :( –

+0

對於我的生活,我仍然不知道爲什麼沒有一個BigInteger構造函數能夠接受數字文字 – Wug

0

您需要使用BigInteger類來處理如此大的數字。它提供對大整數的算術運算。