关于使用数字签名在Java中编写程序的问题

时间:2017-03-31 22:17:47

标签: java

  

写两个程序 - 一个用于Alice,另一个用于Bob。它们之间的数据交换是通过用作通信信道的文本文件实现的。

我一直在Netbeans中收到错误:

  

线程“main”中的异常java.lang.RuntimeException:无法编译的源代码 - 错误的sym类型: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");
        }

    }

}

1 个答案:

答案 0 :(得分:0)

班级Signature没有encode方法。