2013-02-09 2 views
1
for (int ii = 0 ; ii < 200 ; ii++) 
    { 
    encrypt();  
    } 

long start = System.currentTimeMillis(); 
    for (int ii = 0 ; ii < 2000 ; ii++) 
    { 
    encrypt();  
    } 
long elapsed = System.currentTimeMillis() - start; 

for (int ii = 0 ; ii < 200 ; ii++) 
    { 
    decrypt();  
    } 

long start = System.currentTimeMillis(); 
    for (int ii = 0 ; ii < 2000 ; ii++) 
    { 
    decrypt();  
    } 
long elapsed = System.currentTimeMillis() - start; 



private void encrypt() 
    { 
      M = new BigInteger(64,random); 
      C = M.multiply(k).mod(N); 
    } 

private void decrypt() 
    { 
      kk= k.modinverse(N); 
      Mp = kk.multiply(c).mod(N); 
    } 

Но я считаю, что результаты неверны при запуске этой программы на платформе netbeans. Есть ли способ сравнить любую криптографию алгоритма во время выполнения. Необходимый алгоритм расшифровки занимает много времени, чем алгоритм шифрования? Пожалуйста, предложите.Как вычислить истекший алгоритм шифрования и дешифрования времени?

+0

Я проигнорировал результаты первого теста 10000 и пропустил их, по крайней мере, через 2-10 секунд после его прогрева. –

+0

Следует помнить, что случайный может занять больше времени, чем вещь, которую вы тестируете. Я попытался бы создать ваши случайные данные, прежде чем вы начнете отсчет времени. –

ответ

1

Прежде всего, ваши методы шифрования и дешифрования, очевидно, не подходят для какой-либо серьезной защиты.

Метод шифрования также, как представляется, содержит генерацию случайного BigInteger. Обычно вы делаете это только при создании пары ключей (а затем вы генерируете простое, а не произвольное целое число, по крайней мере, для алгоритма RSA). Итак, какой метод шифрования/дешифрования это вне меня.

Кроме того, для оптимизации виртуальной машины Java требуется много времени. Таким образом, в основном вам лучше использовать очень большое количество раундов тестирования, а затем разделить прошедшее время на количество раундов.

Ваш текущий выход очень сильно зависит от состояния генератора случайных чисел. Если энтропия исчерпана, для ее генерации новых чисел потребуется много времени.

+0

Спасибо за все. Я проигнорирую эту строку, которая содержит генерировать случайное большое целое число. Если этот метод действителен для сравнения между временем зашифрования/дешифрования. теперь просто мне нравится знать. Сколько итераций достигнет приемлемого результата? – Mhsz

+0

Зависит от конфигурации системы. Может быть, этого достаточно, но лучший способ проверить - пойти на действительно большое количество, несколько миллионов. Минимум не ясен, но в целом, если среднее значение в несколько миллионов раз совпадает со средним значением в несколько тысяч раз, то вы получаете достоверные результаты. –

+0

спасибо owlstead. Предназначен для конфигурации оборудования компьютера? таких как CPU и RAM или еще. Я запускаю эту программу на моем ноутбуке, cpu ci3 2.30 GH, 2.91 ГБ ОЗУ и платформу IDE 7.2.1 NetBeans, интегрированную с Java: 1.6.0_37; Клиент Java HotSpot (TM) 20.12-b01. Нужно ли упоминать спецификации компьютера при написании результатов в моем проекте? – Mhsz