就是简单的推送例子
总是报错:
java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1277)
at java.security.KeyStore.load(KeyStore.java:1185)
at javapns.back.SSLConnectionHelper.<init>(Unknown Source)
at javapns.back.PushNotificationManager.initializeConnection(Unknown Source)
at com.test.iphonePush.test.main(test.java:34)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore.b(DashoA13*..)
at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1274)
... 4 more代码是:
 public static void main(String[] args) throws Exception {
        try {
              String deviceToken = "e775b5892f3334427c14def8aa4d8189a4ec1c795020072f4baa7ee92e50b1db";
              //iphone手机获取的token              PayLoad payLoad = new PayLoad();
              payLoad.addAlert("我的push测试");    //push的内容
              payLoad.addBadge(1);                 //图标小红圈的数值
              payLoad.addSound("default");         //铃音
                        
              PushNotificationManager pushManager = PushNotificationManager.getInstance();
              pushManager.addDevice("iPhone", deviceToken);
                        
              //Connect to APNs
                          /************************************************
                          测试的服务器地址:gateway.sandbox.push.apple.com /端口2195 
              产品推送服务器地址:gateway.push.apple.com / 2195 
                         ***************************************************/
              String host= "gateway.sandbox.push.apple.com";
              int port = 2195;
              String certificatePath= "E:/User/push_p.p12";   //导出的证书
              String certificatePassword= "sunlg";            //此处注意导出的证书密码不能为空因为空密码会报错
              pushManager.initializeConnection(host,port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
              
              //Send Push
              Device client = pushManager.getDevice("iPhone");
              pushManager.sendNotification(client, payLoad);
              pushManager.stopConnection();              pushManager.removeDevice("iPhone");
             }
             catch (Exception e) {
              e.printStackTrace();
             }    }
我在网上查了查这个错误,有的说是加密解密不一致。
有的是说需要通过OpenSSL转换一下:
1)openssl pkcs12 -in mycerts.pfx -out mycerts.pem 
2)openssl pkcs12 -export -in mycerts.pem -out mykeystore.p12 说的这2中处理方法也不知道怎么用。谁知道怎么做才能执行成功啊?看了好几天了也没找到方法