【发布时间】:2014-06-28 15:42:22
【问题描述】:
所以我的问题如下:我正在尝试在 Java 中实现一种使用用户选择的密码 P(比如“4z327yU10p”)加密消息 M(比如从 1 个字符到假设 1000)的方法)。然后,我想使用伪随机数生成器 (PRNG) 将消息隐藏在图像中以选择像素。我的种子是密码。
这是我的方法:
- 对密码进行 sha3 以获取 256b 输出以用作密钥
- 使用 AES 和先前生成的密钥来获取加密消息
- 将输出用作我的 PRNG 的种子
对于 (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) sha3 使用小键是否有效? 2) AES 是否在处理小消息? 3)你知道一个伪随机数生成器,它接受一个种子并在预定的时间间隔内给我随机数?
-
我猜您出于错误的原因使用了错误的加密算法。但是,嘿,好吧,我会把它们回滚并给你直接答案。
标签: java encryption aes sha1 prng