首页 > 解决方案 > 尝试获取具有特定名称的客户时,加密提示 EOFException

问题描述

我正在使用 restful dis 开发一个 Intjellij 项目,并实现了在客户端和服务器端都实现的非常简单的加密。我调用的方法之一是 getAllCustomers,当我有随机名称的客户时它工作正常,但当我创建一个名称如“Morten”的客户时会崩溃。它在客户端产生“线程“主”com.google.gson.JsonSyntaxException:java.io.EOFException:输入结束第 1 行第 1 列 451 路径 $[12] 中的异常”。服务器端的控制台显示客户是通过加密发送的,但是当我调试解密时,它似乎并没有解密整个字符串。

这是加密类

 public class Encryption {

    public static String encryptDecrypt(String rawString) {


        char[] key = {'F', 'E', 'W', 'O', 'M','X','P'};


        StringBuilder thisIsEncrypted = new StringBuilder();


        for (int i = 0; i < rawString.length(); i++) {
            thisIsEncrypted.append((char) (rawString.charAt(i) ^ key[i % key.length]));
        }

        // We return the encrypted string
        return thisIsEncrypted.toString();
    }
}

根据我创建用户的名称以及我用作键的字符,它有时有效,有时无效。

    public Trampoline<Void> getAllCustomers(){

    try
    {
        String url = BASE+"customers";

        String response = networkUtil.httpRequest(url, "GET");

        response = Encryption.encryptDecrypt(response);

        Customer[] customers = new Gson().fromJson(response, Customer[].class);


        return Trampoline.more(() -> view.ShowAllCustomers(Arrays.asList(customers)));
    }
    catch (IOException e)
    {
        return Trampoline.more(()-> view.ShowMessage("Error getting customers from server. Message: " + e.getMessage()));
    }

}

有时错误发生在上面提到的最后,因为它似乎无法获得所需的最终数组括号在此处输入图像描述

有时似乎无法解密整个字符串,我很茫然,有人知道问题可能是什么吗?

标签: javaencryption

解决方案


推荐阅读