android base64在php中编码和解码

时间:2018-11-29 22:40:43

标签: java php android security base64

嗨,我正在尝试解码两个字符串,然后使用返回结果(byte []),然后将其放入Biginteger构造函数中,如下所示:

BigInteger bigInteger1 = new BigInteger(1, Base64.decode(myString1,0));
BigInteger bigInteger2 = new BigInteger(1, Base64.decode(myString2,0));

然后将这个BigIntegers放在 java.security.KeyFactory 类上,以创建如下的 RSAPublicKey

KeyFactory.getInstance(ALG).generatePublic(new RSAPublicKeySpec(bigInteger1,bigInteger2));

然后使用我的公共密钥对这样的字符串进行编码:

public static String encrypt(PublicKey publicKey, String str) {
 Cipher instance = Cipher.getInstance(ALG);
            instance.init(1, publicKey);
            Base64.encodeToString(instance.doFinal(str.getBytes()), 2);
}

PHP 上。我用android实现了这个目标,但是当我想用 PHP 做到这一点时,即使是一开始,当我想用​​ PHP 解码我的字符串时,我仍然遇到很多问题代码:

$encoded = base64_decode($base,true);
$decoded = utf8_decode(base64_decode($encoded));

我将得到以下字符串: ?? 2?] ???? 5N?[?? S

但是在android中,解码后的字符串完全不同,并且始终保持相同的结果

我试图在 JSP 上完成这项工作,但是学习一种新语言确实很困难,而且我没有时间。

我可以在春季启动时执行此项目吗?我有Java代码

请有人帮帮我。

1 个答案:

答案 0 :(得分:0)

您两次解码字符串。您应该尝试:

$encoded = base64_encode($base); // and not base64_decode
$decoded = base64_decode($encoded); // will be $base

utf8_decode正在将使用UTF-8编码的ISO-8859-1字符的字符串转换为单字节ISO-8859-1。确定要用吗?

在PHP中,您可以使用intval来执行BigInteger(),但是我不确定您不会遇到整数溢出的情况。

最后,OpenSSL library肯定会完成密钥生成和加密的工作。