1

我正在尝试创建一个 android 应用程序,它可以使用我通过的私钥签署一个字符串,并且 100% 使用 vb 和 php 我真的很困惑,并尝试了一切来解决这个问题!!!

我对加密有点陌生,并希望获得任何可能的帮助

signkey = 密钥
尝试:使用密钥对字节进行签名并使用 base64 将其发送回服务器...


密钥没问题,看起来像 php 密钥,但如果我使用另一个测试密钥,它可以正常工作,但我需要那个! !

代码 VB:

        Dim textReader As TextReader = New StringReader(tmp_key)
        Dim pemReader As PemReader = New PemReader(textReader)
        Dim _keyPair As AsymmetricCipherKeyPair = pemReader.ReadObject()
        Dim _privateKeyParams As ECPrivateKeyParameters = _keyPair.Private
        Dim _publicKeyParams As ECPublicKeyParameters = _keyPair.Public



        Dim signer As ISigner = SignerUtilities.GetSigner("SHA-256withECDSA")
        signer.Init(True, _keyPair.Private)
        Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(info)
        signer.BlockUpdate(bytes, 0, bytes.Length)
        Dim signature As Byte() = signer.GenerateSignature()

重新编码Java:

 try{
        System.out.println("UNSIGNED: "+done);



            Security.addProvider(new BouncyCastleProvider());
        signkey = "-----BEGIN EC PRIVATE KEY-----\n"+
                "MIIBCwIBAQQgJ6TxAzr3IXM5u5M16+smwl/oDSpe3ycrWv7MgPfUyvqggeMwgeAC\n" +
                "AQEwLAYHKoZIzj0BAQIhAP////////////////////////////////////7///wv\n" +
                "MEQEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAA\n" +
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAABwRBBHm+Zn753LusVaBilc6HCwcCm/zbLc4o\n" +
                "2VnygVsW+BeYSDradyajxGVdpPv8DhEIqP0XtEimhVQZnEfQj/sQ1LgCIQD/////\n" +
                "///////////////+uq7c5q9IoDu/0l6M0DZBQQIBAQ==\n"+"-----END EC PRIVATE KEY-----\n";
            Reader rdr = new StringReader (signkey);
            System.out.println(rdr);
            Object parsed = new PEMParser(rdr).readObject();
            KeyPair pair = new JcaPEMKeyConverter().getKeyPair((PEMKeyPair)parsed);
            System.out.println ("ALGORITHM:"+pair.getPrivate().getAlgorithm());
            PrivateKey key = pair.getPrivate();
        Signature sig = Signature.getInstance("SHA256withECDSA");
        sig.initSign(key);
        sig.update(done.getBytes());
        byte[] signatureBytes = sig.sign();


        System.out.println("SIGNED: "+encode(signatureBytes));
        return encode(signatureBytes);
    }catch (Exception e)
    {
e.printStackTrace();
    }

错误:

             org.spongycastle.openssl.PEMException: problem creating EC private key: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] org.spongycastle.asn1.DERBitString.getBytes()' on a null object reference
         at org.spongycastle.openssl.PEMParser$KeyPairParser.parseObject(PEMParser.java:164)
         at org.spongycastle.openssl.PEMParser.readObject(PEMParser.java:92)
         at arionum.net.cubedpixels.utils.Base58.getSignature(Base58.java:201)
         at arionum.net.cubedpixels.views.HomeView$12$1.onClick(HomeView.java:471)
         at com.afollestad.materialdialogs.MaterialDialog.onClick(MaterialDialog.java:410)
         at android.view.View.performClick(View.java:6199)
         at android.widget.TextView.performClick(TextView.java:11090)
         at android.view.View$PerformClick.run(View.java:23647)
         at android.os.Handler.handleCallback(Handler.java:751)
         at android.os.Handler.dispatchMessage(Handler.java:95)
         at android.os.Looper.loop(Looper.java:154)
         at android.app.ActivityThread.main(ActivityThread.java:6682)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: org.spongycastle.openssl.PEMException: problem creating EC private key: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] org.spongycastle.asn1.DERBitString.getBytes()' on a null object reference
         at org.spongycastle.openssl.PEMParser$ECDSAKeyPairParser.parse(PEMParser.java:243)
         at org.spongycastle.openssl.PEMParser$KeyPairParser.parseObject(PEMParser.java:154)
        ... 14 more
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] org.spongycastle.asn1.DERBitString.getBytes()' on a null object reference
         at org.spongycastle.openssl.PEMParser$ECDSAKeyPairParser.parse(PEMParser.java:232)
        ... 15 more
4

0 回答 0