2017-03-31 29 views
-2

編寫兩個程序 - 一個用於Alice,另一個用於Bob。它們之間的數據交換是通過用作通信通道的文本文件來實現的。關於使用數字簽名在Java中編寫程序的問題

我不斷收到Netbeans中的一個錯誤:在線程

異常 「主」 了java.lang.RuntimeException:不可編譯的源代碼 - 錯誤的符號類型:Signature.encode

燦任何人都能幫助我指引正確的方向嗎?如果需要,我可以發佈錯誤消息;它顯示了愛麗絲的鑰匙和擴展的消息,但沒有提到鮑勃。 如果需要,我也可以發佈實驗室指導。

import java.math.BigInteger; 

class Signature { 
    static class Keys { 
     BigInteger n = new BigInteger("9617"); 
     BigInteger d = new BigInteger("3869"); 
     BigInteger e = new BigInteger("17"); 
    } 

    public static void main(String[] args) { 

     Keys keys = new Keys(); 
     String message = "What's up Bob"; 
     int blockSize = 4; 


     Signature obj = new Signature(); 


     System.out.println("Alice's keys:"); 
     System.out.println("e: " + keys.e); 
     System.out.println("d: " + keys.d); 
     System.out.println("n: " + keys.n); 
     while (message.length() % (blockSize/2) != 0) { 
      message += "-"; 
     } 
     /
     System.out.println(
      "Alice's extended message:\n" + 
      message); 
     String encodedMsg = obj.encode(message); 
     String signature = obj.dosignature(
      encodedMsg, keys.d, keys.n, blockSize); 

     System.out.println(
      "Alice's digital signature\n" + 
      signature); 
     String signedMsg = message + "_" + signature; 

     System.out.println(
      "Alice's signed message:\n" + 
      signedMsg); 
     String extractedMsgText = 
      signedMsg.substring(
       0, signedMsg.indexOf('_')); 

     System.out.println(
      "Bob's extracted message text:\n" + 
      extractedMsgText); 
     String extractedSignature = 
      signedMsg.substring(
       signedMsg.indexOf('_') + 1); 
     System.out.println(
      "Bob's extracted digital signature:\n" + 
      extractedSignature); 
     String decipheredSignature; 
     decipheredSignature = obj.doRSA(extractedSignature, keys.e, keys.n, blockSize); 

     String decodedSignature = obj.decode(
      decipheredSignature); 
     System.out.println(
      "Bob's decoded digital signature:\n" + 
      decodedSignature); 
     if (extractedMsgText.equals(decodedSignature)) { 
      System.out.println(
       "Bob's conclusion: Valid signature"); 
     } else { 
      System.out.println(
       "Bob's conclusion: Invalid signature"); 
     } 

    } 

} 
+0

您正在嘗試運行甚至無法編譯的Java代碼。不要這樣做。閱讀你從編譯器得到的錯誤,修復它們,然後,只有這樣,才能執行代碼。另外,縮進你的代碼。您的IDE可以通過一個鍵盤快捷鍵爲您完成。沒有縮進的代碼是不可讀的。 –

+0

所以你交了一份不能編譯的作業,但你驚訝於你的教授沒有給你拒絕解決方案的理由是「錯誤的」? – domsson

+0

我只是想知道他們是任何突出errors.Iam試圖解決,但我堅持我應該做next.Thaks JB我會按你所說的做。 – LordEwok

回答

0

Signature不具有encode方法。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/15708776) –

+0

嗯,問題是:「任何人都可以幫助引導我走向正確的方向嗎?」 - 這是一個方向。對我來說問題的根源。 – michaeak