我对加密的东西全新,我对java中的加密有一些疑问 我用它来做java中的RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPTION_MODE,publicKey);
byte result = cipher.doFinal(data);
和使用AES的方法相同,我使用此代码生成AES密钥
SecureRandom random = new SecureRandom();
byte [] key = new byte [16];
random.nextByte(key);
SecretKeySpec secretKey = new SecretKeySpec(key,"AES");
但正如我在其他程序代码中所看到的,这不是他们如何使用加密我总是看到他们在AES中使用了一些东西作为IV参数,他们从不使用" AES"或者" RSA"得到一个密码实例。 我用来加密数据安全的方式是什么? 我确定我错过了什么
更新:
我还有一个问题,就是我用AES加密数据的方式改变AES加密的数据大小,它将数据大小从1024改为1040
byte key [] = new byte[16];
SecureRandom random = new SecureRandom();
random.nextBytes(key);
SecretKeySpec keySpec = new SecretKeySpec(key,"AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE,keySpec);
FileInputStream in = new FileInputStream("test.txt");
byte [] buffer = new byte[1024];
byte [] encrypted;
while (in.read()>0){
encrypted = c.doFinal(buffer);
System.out.println(encrypted.length);
}
输出是: 1040 1040 。 。 1040
简单加密的数据大小总是比原始数据多16个字节 我是否必须处理这个或它,因为我使用Cipher.getInstance(" AES");
答案 0 :(得分:2)
这不是推荐的方式,您需要更改它。您可能希望更好地了解StackOverflow。您的问题已在[{3}}帖子中直接回答。
请务必仔细查看所有答案。例如How to encrypt String in Java更多。