Generate A Secret Key Using Aes
For a truly secure key, you need to be using a hardware security module (HSM) to generate and protect the key. HSM manufacturers will typically supply a JCE provider that will do all the key generation for you, using the code above. Generate an AES key plus Initialization vector (iv) with openssl and; how to encode/decode a file with the generated key/iv pair; Note: AES is a symmetric-key algorithm which means it uses the same key during encryption/decryption. Generating key/iv pair. We want to generate a 256-bit key and use. Jul 25, 2008 This application demonstrates how to perform secret encryption using VB.NET and the.NET Framework 3.0. I've put together an encryption demo program that demonstrates how to encrypt and decrypt documents using the following encryption methods: AES (Advanced Encryption Standard). DO NOT USE THIS KEY FOR YOUR OWN ENCRYPTION ' Create a new.
Symmetric cryptography also known as secret-key encryption is used to encrypt and decrypt data using a single secret key. Warcraft 3 reign of chaos free cd key generator. Same secret key is used to encrypt and decrypt data from both parties, the sender and the receiver. Major symmetric algorithms are AES, DES, RC2, Rijndael, and TripleDES. The actual AES cipher then performs a series of mathematic transformations using the plaintext and the secret key as a starting point. In order, these are: Key expansion. This uses the original secret key to derive a series of new “round keys” using the Rijndael’s key schedule algorithm.
posted 11 years ago- 1
Here in this code I am generating SecretKey in the main() method with the use of key generator. But can anybody please tell me how can I generate SecretKey based on user's password in the below program?
Thanks in Advance,
Jenish
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import java.security.spec.AlgorithmParameterSpec;
public class AESEncrypter
{
Cipher ecipher;
Cipher dcipher;
public AESEncrypter(SecretKey key)
{
// Create an 8-byte initialization vector
byte[] iv = new byte[]
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
};
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);
try
{
ecipher = Cipher.getInstance('AES/CBC/PKCS5Padding');
dcipher = Cipher.getInstance('AES/CBC/PKCS5Padding');
// CBC requires an initialization vector
ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
}
catch (Exception e)
{
e.printStackTrace();
}
}
// Buffer used to transport the bytes from one stream to another
byte[] buf = new byte[1024];
public void encrypt(InputStream in, OutputStream out)
{
try
{
// Bytes written to out will be encrypted
out = new CipherOutputStream(out, ecipher);
// Read in the cleartext bytes and write to out to encrypt
int numRead = 0;
while ((numRead = in.read(buf)) >= 0)
{
out.write(buf, 0, numRead);
}
out.close();
}
catch (java.io.IOException e)
{
}
}
public void decrypt(InputStream in, OutputStream out)
{
try
{
// Bytes read from in will be decrypted
in = new CipherInputStream(in, dcipher);
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
while ((numRead = in.read(buf)) >= 0)
{
out.write(buf, 0, numRead);
}
out.close();
}
catch (java.io.IOException e)
{
}
}
public static void main(String args[])
{
try
{
// Generate a temporary key. In practice, you would save this key.
// See also e464 Encrypting with DES Using a Pass Phrase.
KeyGenerator kgen = KeyGenerator.getInstance('AES');
kgen.init(128);
SecretKey key = kgen.generateKey();
// Create encrypter/decrypter class
AESEncrypter encrypter = new AESEncrypter(key);
// Encrypt
encrypter.encrypt(new FileInputStream('E:keeper.txt'),new FileOutputStream('E:Encrypted.txt'));
// Decrypt
encrypter.decrypt(new FileInputStream('E:keeper.txt'),new FileOutputStream('E:Decrypted.txt'));
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Please make sure you use a different, random Initialisation Vector for each password-based key and each message, and save it with the encrypted data. Otherwise each message using the same key and starting with the same data will be encrypted the same, giving attackers a head start.
Thanks for your reply.
I have tried copy pasting the code from the thread you mentioned but I got the exception on line
SecretKeyFactory factory = SecretKeyFactory.getInstance('PBKDF2WithHmacSHA1');
java.security.NoSuchAlgorithmException: Algorithm PBKDF2WithHmacSHA1 not available
at javax.crypto.SunJCE_b.a(DashoA12275)
at javax.crypto.SecretKeyFactory.getInstance(DashoA12275)
at ftpserver.AESEncrypter.main(AESEncrypter.java:107)
Can you please tell me what is wrong with my code?
Thanks in Advance,
Jenish
Can you please tell me what is wrong with my code?
What version of Java are you using? I believe that algorithm was added with Java 6.
Henry
Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Generate Secret Key Using Aes
Aes Secret Key Generator
posted 11 years agoThanks a lot for this wonderful program Carey.
Aes Encryption Key Generator
lily ch wrote:Hi, I'm new to encryption. Was wondering how can I store the key or print out the value of the key? Thanks!
encryption keys are binary. They don't print well. You can store them in a file by just writing out the binary bytes, but you can't read or print the binary.
Most folks wrap the binary in a text-based encoding, usually base64 or mime.
Generate Secret Key Aes 256
https://coderanch.com/t/581824/java/java/Decrypt-AES-password