繁体   English   中英

在Java中加密通用类型

[英]Encrypting a generic type in java

我在使用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)如何加密通用类型? (想法是使用密码作为密钥)

如前所述,加密在字节数组之上进行。 您可能仍然有一种方法,例如,通过Java序列化,XML,JSON,EDI等,将数据转换为字节数组并返回。 这超出了此答案的范围。 一旦有了序列化和反序列化的方法,就可以加密或解密序列化的(字节数组)形式

使用用户的凭据密码来加密数据本身可能不是最好的主意。 用户可能不想通过其密码。 您可以使用随机加密密钥,然后再使用某种非对称加密来传递加密密钥。

2)如果数据是加密的,我如何与其他用户共享? 加上它,如果另一个用户只能在不知道所有者密码的情况下读取数据,又如何才能读取数据?

实际上,RSA(或其他非对称加密)允许在不交换用户私钥或密码本身的情况下将数据发送给其他用户。

我可以在类中添加变量,但不能将变量添加到方法中

您可以使用方法变量,但是它们是方法范围内的变量,而不是对象属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM