将加密的 PHP 字符串解密为 Android Java
decrypt the encrypted PHP string to Android Java
我想在PHP加密学生的期末成绩,在AndroidJava解密。我参考了我的代码 here 但它 returns 错误的值。
这是我的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 加密是 运行 .. 但是当我解密它时系统 returns 另一个加密值.. 例如 fGrade 是 1.0.
PHP 加密后的字符串值为:"PT1RVERSRGU="
Java解密后的值为:“==QTDRDe”
我哪里做错了?我需要帮助..谢谢你们!
Base64没有密钥,任何人都可以对其进行解码、更改和替换。但是,如果您只是想阻止临时用户,那么这可能就是您所需要的。您需要定义要保护的人,以免知道每个方案都可能受到损害。
为了加密数据使用AES. Encryption is not easy to get correct. The PHP mcrypt
encryption function is flawed, do not use it. Consider RNCryptor-php,它提供了一个完整的解决方案,包括身份验证和密钥派生。
我想在PHP加密学生的期末成绩,在AndroidJava解密。我参考了我的代码 here 但它 returns 错误的值。
这是我的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 加密是 运行 .. 但是当我解密它时系统 returns 另一个加密值.. 例如 fGrade 是 1.0.
PHP 加密后的字符串值为:"PT1RVERSRGU="
Java解密后的值为:“==QTDRDe”
我哪里做错了?我需要帮助..谢谢你们!
Base64没有密钥,任何人都可以对其进行解码、更改和替换。但是,如果您只是想阻止临时用户,那么这可能就是您所需要的。您需要定义要保护的人,以免知道每个方案都可能受到损害。
为了加密数据使用AES. Encryption is not easy to get correct. The PHP mcrypt
encryption function is flawed, do not use it. Consider RNCryptor-php,它提供了一个完整的解决方案,包括身份验证和密钥派生。