次のアルゴリズムの時間計算量を計算してみます。
private void encrypt()
{
M = new BigInteger(64,random);
C = M.multiply(k).mod(N); // O(n^2)
}
private void decrypt()
{
kk= k.modinverse(N); // O(n^3)
Mp = kk.multiply(c).mod(N); //O(n^2)
}
時間の複雑さを正しく計算しましたか?
暗号化の時間計算量は O(n^2)、復号化の時間計算量は O(n^3) + O(n^2) = O(n^3) です。