将加密的PHP字符串解密为Android Java

时间:2016-02-27 13:35:59

标签: java php android base64

我希望用PHP加密学生的最终成绩,并在Android Java中解密。我引用了我的代码here,但它返回了错误的值。

这是我的PHP加密功能

function encode5t($value1){
      for($i=0;$i<3;$i++)
    {
        $value1=base64_encode(strrev($value1));
    }
    return $value1;
    }

调用该函数:

    foreach ($rows as $row){
        $post["cSemester"] = $row["cSemester"];
        $post["cSchoolYear"] = $row["cSchoolYear"];
        $post["cSubjectCode"] = $row["cSubjectCode"];
        $post["cDescription"] = $row["cDescription"];
        $post["nFGrade"] = encode5t($row["nFGrade"]);
        $post["nCGrade"] = $row["nCGrade"];
        $post["nCredit"] = $row["nCredit"];

        //update our response JSON data
        array_push($response["posts"], $post);
    }
    echo json_encode($response);

这是我的Java代码。

    vGrades = json.getJSONArray(TAG_POSTS);
    for (int i = 0; i < vGrades.length(); i++) {
    JSONObject c = vGrades.getJSONObject(i);

    String cSemester = c.getString(TAG_SEMESTER);
    String cSchoolYear = c.getString(TAG_SCHOOLYEAR);
    String cSubjectCode = c.getString(TAG_SUBJECTCODE);
    String cDescription = c.getString(TAG_DESCRIPTION);
    String encrypted_string = c.getString(TAG_FINALGRADE);
    String nCGrade = c.getString(TAG_COMPLETIONGRADE);
    String nCredit = c.getString(TAG_CREDIT);
    HashMap<String, String> map = new HashMap<String, String>();

    try{
    byteArray = Base64.decode(encrypted_string, Base64.DEFAULT);
    decrypt = new String(byteArray, "UTF-8");
    }catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }  // this is where I want to decrypt it.

    nFGrade = decrypt;
    map.put(TAG_SEMESTER, cSemester);
    map.put(TAG_SCHOOLYEAR, cSchoolYear);
    map.put(TAG_SUBJECTCODE, cSubjectCode);
    map.put(TAG_DESCRIPTION, cDescription);
    map.put(TAG_FINALGRADE, nFGrade);
    map.put(TAG_COMPLETIONGRADE, nCGrade);
    map.put(TAG_CREDIT, nCredit);
    ViewGrades.add(map);
    }

PHP加密正在运行..但是当我解密它时,系统返回另一个加密值..例如fGrade是1.0。

PHP encypted String值为:&#34; PT1RVERSRGU =&#34;

Java解密值为:&#34; == QTDRDe&#34;

我哪里出错了?我需要帮助..谢谢你们!

1 个答案:

答案 0 :(得分:0)

Base64没有密钥,任何人都可以对其进行解码,更改并替换它。但如果您只想阻止临时用户,那么这可能就是您所需要的。您需要定义您要保护的人,以免知道每个方案都可能受到损害。

使用AES加密数据。加密不容易纠正。 PHP mcrypt加密函数存在缺陷,请勿使用它。考虑RNCryptor-php,它提供了完整的解决方案,包括身份验证和密钥派生。