检索加密的哈希响应上的ID

检索加密的哈希响应上的ID。可以在Java Android函数上对其进行解密吗?

当烤面包是结果字符串时出现,我无法获取ID,当我输入用户名字符串时,出现的是字符串结果。帮助和我感到困惑

Json Response

{
    "status": 200,"reason": "OK","success": true,"message": null,"result": "eyJ0eXAiOiJKV1QiLCJhbGciOiJITUFDLVNIQTI1NiJ9.eyJpZCI6IjQ5OSIsImVtYWlsIjoiYmlzbWlsbGFoYmlzYUBleGFtcGxlLmNvbSIsIm1zaXNkbiI6IjA3OTc5Nzg0NjQ5NCIsInVzZXJuYW1lIjoiYmlzbWlsbGFoYmlzYSIsInZlcmlmaWVkTWVtYmVyIjpudWxsLCJwcm9maWxlIjp7ImlkIjoiMzE2IiwiaWRfZ2VvZGlyZWN0b3J5IjpudWxsLCJmdWxsbmFtZSI6ImJpc21pbGxhaGJpc2EiLCJudW1iZXIiOiIyNzQyNDciLCJpbWFnZSI6Imh0dHBzOlwvXC9kZW1vLmtyZWRpdGltcGlhbi5jb21cL3N0b3JhZ2VcL2ltYWdlc1wvZGVmYXVsdFwvYXZhdGFyLmpwZyIsInJlY29yZCI6eyJzdGF0dXmioiJQVUJMSVNIIiwiY3JlYXRlIjp7InVzZXIiOm51bGwsInRpbWVzdGFtcCI6eyJkYXRlIjoiMjAxOS0xMi0wMyAxNTowODozMi4wMDAwMDAiLCJ0aW1lem9uZV90eXBlIjozLCJ0aW1lem9uZSI6IkFzaWFcL0pha2FydGEifX0sInVwZGF0ZSI6eyJ1c2VyIjpudWxsLCJ0aW1lc3RhbXAiOm51bGx9fSwibWV0YWRhdGEiOnsidXNlcm5hbWUiOiJiaXNtaWxsYWhiaXNhIiwiZW1haWwiOiJiaXNtaWxsYWhiaXNhQGV4YW1wbGUuY29tIiwicGhvbmUiOiIwNzk3OTc4NDY0OTQifSwic3RhdGlzdGljIjpudWxsfX0.zIEhdU5MyNjReG_9_661FWf0_R5eZuJweyl0JNFd7X0"
}

LoginUser.java

    public void LoginUser() {
        //membuat progress dialog
        pDialog = new ProgressDialog(this);
        pDialog.setCancelable(false);
        pDialog.setMessage("Tunggu proses login ...");
        pDialog.show();

        //mengambil data dari edittext

        final String username = txtusername.getText().toString().trim();
        final String password = txtpassword.getText().toString().trim();

        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(50,TimeUnit.SECONDS)
                .readTimeout(50,TimeUnit.SECONDS).build();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BuildConfig.BASE_URL).client(client)
                .addConverterFactory(GsonConverterFactory.create(new Gson())).build();

        RequestInterface api = retrofit.create(RequestInterface.class);
        Call<ResponseLoginSucces> call = api.login_member(username,password);

        call.enqueue(new Callback<ResponseLoginSucces>() {
            @Override
            public void onResponse(Call<ResponseLoginSucces> call,Response<ResponseLoginSucces> response) {

                if(response.isSuccessful()){
                    pDialog.dismiss();
                    if(response.body().getResult() != null){

                        // Jika login berhasil
                        String id = response.body().getResult();
                        String email = response.body().getResult();
                        String username = response.body().getResult();
                        String msisdn = response.body().getResult();
                        sharedPrefmanager.saveSPString(SharedPrefmanager.SP_ID,id);
                        sharedPrefmanager.saveSPString(SharedPrefmanager.SP_EMAIL,email);
                        sharedPrefmanager.saveSPString(SharedPrefmanager.SP_username,username);
                        sharedPrefmanager.saveSPString(SharedPrefmanager.SP_msisdn,msisdn);

                        Toast.makeText(getapplicationContext(),"berhasil Login" +id,Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(LoginUser.this,MenuUtama.class);
                        sharedPrefmanager.saveSPBoolean(SharedPrefmanager.SP_SUDAH_LOGIN,true);
                        startactivity(intent);
                        finish();


                    } else {
                        Toast.makeText(LoginUser.this,"The username or password is incorrect",Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(LoginUser.this,"Error! Please try again!",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailure(Call<ResponseLoginSucces> call,Throwable t) {
                t.printStackTrace();
                pDialog.dismiss();
                Toast.makeText(LoginUser.this,"Koneksi internet terputus.",Toast.LENGTH_SHORT).show();
            }
        });



    }

SharedPrefmanager.java

public class SharedPrefmanager {

    public static final String SP_Kreditimpian = "kreditimpian_v2_demo";

    public static final String SP_ID = "id";
    public static final String SP_EMAIL = "email";
    public static final String SP_username = "username";
    public static final String SP_msisdn ="msisdn";

    public static final String SP_SUDAH_LOGIN = "spSudahLogin";

    SharedPreferences sp;
    SharedPreferences.Editor spEditor;

    public SharedPrefmanager(Context context){
        sp = context.getSharedPreferences(SP_Kreditimpian,Context.MODE_PRIVATE);
        spEditor = sp.edit();
    }

    public void saveSPString(String keySP,String value){
        spEditor.putString(keySP,value);
        spEditor.commit();
    }

    public void saveSPInt(String keySP,int value){
        spEditor.putInt(keySP,value);
        spEditor.commit();
    }

    public void saveSPBoolean(String keySP,boolean value){
        spEditor.putBoolean(keySP,value);
        spEditor.commit();
    }

    public String getSPID(){
        return sp.getString(SP_ID,"");
    }

    public String getSPEmail(){
        return sp.getString(SP_EMAIL,"");
    }

    public String getSpusername(){
        return sp.getString(SP_username,"");
    }

    public String getSpmsisdn(){
        return sp.getString(SP_msisdn,"");
    }

    public Boolean getSPSudahLogin(){
        return sp.getBoolean(SP_SUDAH_LOGIN,false);
    }
}

FragmentMenu.java

sharedPrefmanager = new SharedPrefmanager(getactivity());

Toast.makeText(getactivity(),"Identitas mu "+ sharedPrefmanager.getSPID(),Toast.LENGTH_SHORT).show();
chenyaleiBB 回答:检索加密的哈希响应上的ID

就像@Mike M.所说的那样,响应JSON字符串中的result似乎是用Base64编码的,可以将其看作由dot(。)分隔的3个部分。因此,如果您解码第二部分,您将获得以下有效的JSON字符串,则字段499的值id是您要检索的内容。

{ 
  "id":"499","email":"bismillahbisa@example.com","msisdn":"079797846494","username":"bismillahbisa","verifiedMember":null,"profile":{ 
    "id":"316","id_geodirectory":null,"fullname":"bismillahbisa","number":"274247","image":"https:\/\/demo.kreditimpian.com\/storage\/images\/default\/avatar.jpg","record":{ 
      "status":"PUBLISH","create":{ 
        "user":null,"timestamp":{ 
          "date":"2019-12-03 15:08:32.000000","timezone_type":3,"timezone":"Asia\/Jakarta"
        }
      },"update":{ 
        "user":null,"timestamp":null
      }
    },"metadata":{ 
      "username":"bismillahbisa","phone":"079797846494"
    },"statistic":null
  }
}

如果您首先可以得到result的响应,则可以使用以下代码段通过result(Java 8)对java.util.Base64的第二部分进行解码。对于Java 7,可以使用Apache Commons Codec进行解码(Maven依赖关系如下所示)。最后,使用3个最受欢迎的JSON库-idJacksonGson来检索org.json的值。

Apache Commons Codec(用于Java 7)

<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.9</version>
</dependency>

代码段

// Java 8
//String jsonStr = new String(Base64.getDecoder().decode(resultStr.split("\\.")[1].getBytes()),"UTF-8");

// Java 7
String jsonStr = new String(Base64.decodeBase64(result.split("\\.")[1]),"UTF-8");

// Jackson
String id = new ObjectMapper().readTree(jsonStr).get("id").asText();

// Gson
id = new Gson().fromJson(jsonStr,JsonObject.class).get("id").getAsString();

// org.json
id = new JSONObject(jsonStr).getString("id");
,
   public void LoginUser() {
        //membuat progress dialog
        pDialog = new ProgressDialog(this);
        pDialog.setCancelable(false);
        pDialog.setMessage("Tunggu proses login ...");
        pDialog.show();

        //mengambil data dari edittext

        final String username = txtusername.getText().toString().trim();
        final String password = txtpassword.getText().toString().trim();

        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(50,TimeUnit.SECONDS)
                .readTimeout(50,TimeUnit.SECONDS).build();
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BuildConfig.BASE_URL).client(client)
                .addConverterFactory(GsonConverterFactory.create(new Gson())).build();

        RequestInterface api = retrofit.create(RequestInterface.class);
        Call<ResponseLoginSucces> call = api.login_member(username,password);

        call.enqueue(new Callback<ResponseLoginSucces>() {
            @Override
            public void onResponse(Call<ResponseLoginSucces> call,Response<ResponseLoginSucces> response) {

                if(response.isSuccessful()){
                    pDialog.dismiss();
                    if(response.body().getResult() != null){

                        String jsonStr = new String(Base64.getDecoder().decode(resultStr.split("\\.")[1].getBytes()),"UTF-8");
                        // Gson
                        id = new Gson().fromJson(jsonStr,JsonObject.class).get("id").getAsString();





                        // Jika login berhasil
                        String id = response.body().getResult();
                        String email = response.body().getResult();
                        String username = response.body().getResult();
                        String msisdn = response.body().getResult();
                        sharedPrefManager.saveSPString(SharedPrefManager.SP_ID,id);
                        sharedPrefManager.saveSPString(SharedPrefManager.SP_EMAIL,email);
                        sharedPrefManager.saveSPString(SharedPrefManager.SP_USERNAME,username);
                        sharedPrefManager.saveSPString(SharedPrefManager.SP_MSISDN,msisdn);

                        Toast.makeText(getApplicationContext(),"Berhasil Login" +id,Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(LoginUser.this,MenuUtama.class);
                        sharedPrefManager.saveSPBoolean(SharedPrefManager.SP_SUDAH_LOGIN,true);
                        startActivity(intent);
                        finish();



                    } else {
                        Toast.makeText(LoginUser.this,"The username or password is incorrect",Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(LoginUser.this,"Error! Please try again!",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailure(Call<ResponseLoginSucces> call,Throwable t) {
                t.printStackTrace();
                pDialog.dismiss();
                Toast.makeText(LoginUser.this,"Koneksi internet terputus.",Toast.LENGTH_SHORT).show();
            }
        });



    }
本文链接:https://www.f2er.com/2980343.html

大家都在问