簡體   English   中英

android base64在php中編碼和解碼

[英]android base64 encode and decode in php

嗨,我正在嘗試解碼兩個字符串,然后使用返回結果(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代碼

請有人幫幫我。

您將字符串解碼兩次。 你應該試試 :

$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庫肯定會完成密鑰生成和加密的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM