2013-02-09 6 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 VM이 최적화되는 데 오랜 시간이 걸립니다. 따라서 기본적으로 매우 많은 수의 테스트 라운드를 사용하는 것이 가장 좋으며 경과 시간을 라운드 수로 나눕니다.

현재 출력은 난수 생성 프로그램의 상태에 따라 달라집니다. 엔트로피가 고갈되면 새로운 숫자를 생성하는 데 오랜 시간이 걸립니다.

+0

고맙습니다. 나는 임의의 큰 정수를 생성하는 행을 무시합니다. 이 방법이 유효한 경우 암호화/암호 해독 경과 시간을 비교할 수 있습니다. 지금 나는 단지 알고 싶다. 수용 가능한 결과에 도달하기까지 반복 횟수는 얼마나됩니까? – Mhsz

+0

시스템 구성에 따라 다릅니다. 이것으로 충분할 수도 있지만, 테스트하는 가장 좋은 방법은 몇 백만이라는 엄청난 숫자로 이동하는 것입니다. 최소값은 명확하지 않지만 일반적으로 몇 백만 번 평균이 몇 천 번 평균과 동일하면 유효한 결과를 얻고 있습니다. –

+0

감사합니다. owlstead. 시스템 구성 컴퓨터 하드웨어 사양을위한 것입니까? cpu와 ram 또는 다른 사람과 같은. 이 랩톱에서이 프로그램을 실행하면 Java와 통합 된 cpu ci3 2.30 GH, 2.91 GB RAM 및 NetBeans IDE 7.2.1 플랫폼 : 1.6.0_37; Java HotSpot (TM) 클라이언트 VM 20.12-b01. 내 프로젝트에서 결과를 작성할 때 컴퓨터 사양을 언급해야합니까? – Mhsz