Шифрование универсального типа в Java - PullRequest
0 голосов
/ 24 января 2019

У меня есть некоторые проблемы при работе с универсальным типом в Java 8. В проекте, над которым я работаю, у меня есть эти 3 класса

public class User{
    private String Id;
    private String password;
}

public class Data<E>{
    private <E> data;
    private String Owner; //can read and write the data
    private Vector<String> Others; //can only read the data
}

public class MySecureDataContainer<E>{
    Vector<User> users;
    Vector<Data<E>> data;

    public share(String Id, String passw, E data, String Other);
}

Я только что написал здесь элементы, где у меня есть проблемы. Идея проста: класс MySecureDataContainer работает локально, без потоков и сокетов. каждый зарегистрированный пользователь вектора может создать данные, изменить их, прочитать все данные, которые он создал, поделиться данными с другим пользователем. каждая операция работает только в том случае, если пользователь «авторизуется».

Одной из задач проекта является шифрование всех родовых данных, создаваемых каждым пользователем. так что у меня есть 2 проблемы: 1) как я могу зашифровать универсальный тип? (идея состоит в том, чтобы использовать пароль в качестве ключа) 2) если данные зашифрованы, как я могу поделиться ими с другим пользователем? и, кроме того, как другой пользователь может читать данные, если он может только читать их, не зная пароля владельца? Я могу добавить переменные в классы, но не могу добавить переменные в метод

1 Ответ

0 голосов
/ 24 января 2019

1) как я могу зашифровать универсальный тип?(идея состоит в том, чтобы использовать пароль в качестве ключа)

Как уже отмечалось, шифрование работает поверх байтовых массивов.У вас все еще может быть способ как преобразовать ваши данные в байтовый массив и обратно, например, с помощью сериализации Java, XML, JSON, EDI и т. Д..Это выходит за рамки этого ответа.Если у вас есть способ сериализации и десериализации, вы можете зашифровать или расшифровать сериализованную (байтовый массив) форму

Использование пароля пользователя для шифрования данных может быть не самой лучшей идеей.Пользователь может не захотеть передавать свой пароль.Вы можете использовать случайный ключ шифрования и затем какое-то асимметричное шифрование для передачи зашифрованного ключа.

2) если данные зашифрованы, как я могу поделиться ими с другим пользователем?и, кроме того, как другой пользователь может читать данные, если он может только читать их, не зная пароля владельца?

Действительно, RSA (или другое асимметричное шифрование) позволяет отправлять данные другому пользователю без обмена личным секретным ключом или паролем самого пользователя.

Я могу добавлять переменные в классы,но я не могу добавить переменные в метод

вы можете использовать переменные метода, но они являются переменными в области действия метода, а не атрибутами объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...