Question

I'm trying to implement digital signature in php as in java sample code below:

            Signature rsaSig = Signature.getInstance("MD5withRSA");
            RSAPrivateKey clientPrivateKey = readPrivateKeyFromFile(fileName);
            rsaSig.initSign(clientPrivateKey);
            String source = msg;
            byte temp[] = source.getBytes();
            rsaSig.update(temp);
            byte sig[] = rsaSig.sign();
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encode(sig);

My php code :

    $rsa = new Crypt_RSA();
    $rsa->loadKey('...'); // in xml format

    $plaintext = '...';

    $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); 
    $signature = $rsa->sign($plaintext);

But looks like some thing is missing. We should get same signature as java code returns.Can anybody guide me in this?

Was it helpful?

Solution

By default phpseclib uses sha1 as the hash. You probably need to do $rsa->setHash('md5').

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top