Как проверить подпись в приведенном ниже примере кода клиент-сервер java - PullRequest
0 голосов
/ 23 февраля 2020

Проверка подписи падает каждый раз. Пожалуйста, помогите проверить, в чем проблема с кодом.

-> Клиент сначала отправит подписанные данные на сервер -> Затем сервер сохранит объект класса Message (msgobj) -> Затем какой-нибудь клиент будет читать подписанные данные объекта хранилища (msgobj.listOfMsgReceived.get (i) .signature) -> Затем проверенные подписанные данные будут проверены. (Невозможно проверить)

//Signature sending to server:

Signature sig = Signature.getInstance("SHA1WithRSA");
                PrivateKey prvkey=null;

                try
                {
                        ObjectInputStream in = new ObjectInputStream(
                        new FileInputStream(userId+".prv"));
                        prvkey = (PrivateKey)in.readObject();
                        in.close();
                }
                catch (Exception ee)
                {
                        System.out.println("Private key not found for "+userId+"."+ee);
                }

        ByteBuffer bb = ByteBuffer.allocate(5000);
        bb.put((byte[])msgobj.recipientHash.getBytes());
        bb.put((byte[])msgobj.key);
        bb.put((byte[])msgobj.iv);
        bb.put((byte[])msgobj.encryptedMsg);
        bb.put((byte[])msgobj.timestamp.toString().getBytes());

        sig.initSign(prvkey);
        sig.update(bb.array());

        msgobj.signature = sig.sign();
//Signature verification:
// verify signature
PublicKey publickey1=null;
                                //Rading public key from file                           
try
{
ObjectInputStream in2 = new ObjectInputStream(
new FileInputStream(userId+".pub"));
publickey1 = (PublicKey)in2.readObject();
in2.close();
}
catch (Exception ee)
{
System.out.println("Public key not found for:"+userId+" --> "+ee);
}

Signature sig = Signature.getInstance("SHA1WithRSA");

ByteBuffer bb = ByteBuffer.allocate(5000);

bb.put((byte[])msgobj.listOfMsgReceived.get(i).recipientHash.getBytes());
bb.put((byte[])msgobj.listOfMsgReceived.get(i).key);
bb.put((byte[])msgobj.listOfMsgReceived.get(i).iv);
bb.put((byte[])msgobj.listOfMsgReceived.get(i).encryptedMsg);                                bb.put((byte[])msgobj.listOfMsgReceived.get(i).timestamp.toString().getBytes());

sig.initVerify(publickey1);
sig.update(bb.array());
System.out.println("EXE2");

byte[] sig2 =msgobj.listOfMsgReceived.get(i).signature;

if (sig.verify(sig2))
System.out.println("Signatured verfied.");
else
System.out.println("WARNING: Signature verification failed!);
strong text
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...