rsa 密钥生成 见 http://blog.andsky.com/js-rsa-use-openssl-make-public-pirvate-key/
android 客户端用rsa 公钥加密后经 base64 编码发到 服务端,服务端使用私钥解密
客户端代码
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.RSAPublicKeySpec;
import javax.crypto.Cipher;
import sun.misc.BASE64Encoder;
public class rsa {
        public static void main(String[] args) throws Exception {
                String modulus = "C34FF1FF9771ED88814C26905297BAEDCEC03B847D8AB5620848FC100AC0564FAD5364E9834E29118E7B5F8B1B9EAB201730C4860E8AF2ED2E028704105A01044501A9EF6DA2968E76273AAE496A0963A2FEA9B6179A86F28ACC61C087FB1AEEA4E1CB0ADBB9B757C303741DE602FD790953C8E2C004A425C7CAF4813F403DCD";
        String publicExponent = "010001";
        rsa key = new rsa();
        PublicKey publicKey = key.getPublicKey(modulus, publicExponent);
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        //明文
        String tString = "aabbsdfsdf";
        byte[] plainText = tString.getBytes("UTF-8");
        //加密
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] enBytes = cipher.doFinal(plainText);
        System.out.println(new BASE64Encoder().encode( enBytes ));
        }
         public PublicKey getPublicKey(String modulus,String publicExponent) throws Exception {
         BigInteger m = new BigInteger(modulus, 16);
         BigInteger e = new BigInteger(publicExponent, 16);
         RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m,e);
         KeyFactory keyFactory = KeyFactory.getInstance("RSA");
         PublicKey publicKey = keyFactory.generatePublic(keySpec);
         return publicKey;
   }
}
服务端代码
 function privatekey_decodeing($crypttext, $privatekey)
    {
        $prikeyid = openssl_get_privatekey($privatekey);
        if (openssl_private_decrypt($crypttext, $sourcestr, $prikeyid,OPENSSL_PKCS1_PADDING))
        {
            return $sourcestr;
        }
        return FALSE;
    }
 $i = file_get_contents("private.key");
$base = 'fgvroFPT8GCIPYkGZJ834V0zQsnwbHKsCpFjpdN6TowUuxc6Bxu5PCF7SaZvb+3eCVEsuAjN73IP
QhRclqPiSv0MNPeZaYxNVPCDBkalsW3+/OuwPr7sQ53/rDwr2et0FnKJtkNyaFROMnxI9wRyg2Tx
h4+Fe60ypCvwY+wT8eg=';
        $b = base64_decode($base);
var_dump(privatekey_decodeing($b, $i));