PRNG与间隔种子

时间:2014-06-28 15:42:23

标签: java encryption aes sha1 prng

所以我的问题如下:我正在尝试用Java实现一种方法来加密消息M(比如从1个字符开始,比方说1000个)用密码P,由用户选择(比方说“4z327yU10p”) )。然后,我想使用伪随机数生成器(PRNG)隐藏图像中的消息以选择像素。我的种子是密码。

这是我的方法:

  1. sha3在密码上获取256b输出以用作密钥
  2. 将AES与先前生成的密钥一起使用以获取加密消息
  3. 将输出用作我PRNG的种子
  4. 对于(1):这可能是短密码吗?

    对于(2):AES可以用于小消息吗?

    对于(3):如何在图像的间隔中包含随机数? (0,...,480000)因为我的算法给了我一个int

    这是代码:

    public void initSeed(String password){ //pour initier la seed avec le password
        Message message = new Message();
        message.initMessageASCII(password);
        List <Integer> temp = message.getMsg();
        byte[] vect = new byte[temp.size()];
        for (int i=0; i< temp.size(); i++){
            vect[i] = temp.get(i).byteValue();
        }
        this.seed = vect;
    }
    
    public void init() { //pour initier le remplissage du vecteur randList
        SecureRandom random;
        try {
            random = SecureRandom.getInstance("SHA1PRNG"); //SHA1PRNG est un algorithme très efficace
            random.setSeed(seed);
            random.nextBytes(randList); //fonction pour créer les bytes aléatoires et les écrire dans "bytes"
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
    

1 个答案:

答案 0 :(得分:0)

我会回答不同的问题(询问单独的问题):

  1. 是的,SHA-3可用于任意大小的消息。
  2. 是的,AES可用于任意大小的消息。
  3. Random.nextInt(int)
  4. 你可以看到这是一个顾问诅咒,但我给了你所要求的而不是你需要的东西。例如,您不需要(尚未标准化)SHA-3,但您应该使用PBKDF。