java - Signing data in Android and Verifying it in python -


i have written following code sign data in android:

import java.security.keyfactory; import java.security.keypair; import java.security.keypairgenerator; import java.security.privatekey; import java.security.publickey; import java.security.signature; import java.security.spec.rsapublickeyspec; import android.app.activity; import android.os.bundle; public class testactivity extends activity { /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); try{ string m ="this message"; system.out.println(m); keypairgenerator keypairgen = keypairgenerator.getinstance("rsa"); keypairgen.initialize(1024); keypair kp = keypairgen.generatekeypair(); privatekey prikey = kp.getprivate(); publickey pubkey = kp.getpublic(); keyfactory keyfactory = keyfactory.getinstance("rsa"); rsapublickeyspec publickeyspec = keyfactory.getkeyspec(pubkey, rsapublickeyspec.class); system.out.println("with tostring: "); system.out.println("mod :" + publickeyspec.getmodulus().tostring()); system.out.println("exp :" + publickeyspec.getpublicexponent().tostring()); system.out.println("publickey:" + pubkey.tostring()); system.out.println("publickey:" + pubkey); system.out.println("publickey base64:" +mybase64.encode(pubkey.getencoded())); signature instance = signature.getinstance("sha1withrsa"); instance.initsign(prikey); instance.update(m.getbytes()); byte[] signature = instance.sign(); system.out.println("signature: " + mybase64.encode(signature)); }catch(exception e){ e.printstacktrace(); } } } 

i copy pasting values adb logcat python , verifying in python using:

mod=#i paste mod here exp=#i paste exp here signature=#i paste signature here message="this message" publickey = rsa.construct((mod,exp)) print 'publickey base64: ' + publickey.exportkey() print str(publickey) test = sha.new(message) verifier = pkcs1_v1_5.new(publickey) signature_base = base64.b64decode(signature) print "verification: " + str(verifier.verify(test, signature_base)) 

i find mybase64.encode(pubkey.getencoded()) (in java) same publickey.exportkey() (in python)

however, verification results false.

the java code seems work fine , if run using javac .

any help, may going wrong?

often error has whitespace sneaking data string. try stripping before computing hashes.


Comments

Popular posts from this blog

javascript - backbone.js Collection.add() doesn't `construct` (`initialize`) an object -

php - Get uncommon values from two or more arrays -

Adding duplicate array rows in Php -