public static SymmetricKey GenerateKey(SymmetricAlgorithmType symmetricAlgorithmType, SymmetricKeySize keySize = defaultKeySize, SymmetricBlockSize blockSize = defaultBlockSize) { var(symmetricAlgorithm, _) = GetAlgorithm(symmetricAlgorithmType); symmetricAlgorithm.KeySize = (int)keySize; symmetricAlgorithm.BlockSize = (int)blockSize; symmetricAlgorithm.GenerateKey(); symmetricAlgorithm.GenerateIV(); var symmetricKey = new SymmetricKey(symmetricAlgorithm.Key, symmetricAlgorithm.IV); return(symmetricKey); }
public static SymmetricKey GetKey(string password, string salt = null, SymmetricKeySize keySize = defaultKeySize, SymmetricBlockSize blockSize = defaultBlockSize) { var saltBytes = SaltFromPassword(password, salt); using (var deriveBytes = new Rfc2898DeriveBytes(password, saltBytes)) { var keySizeValue = (int)keySize; var blockSizeValue = (int)blockSize; var keyBytes = deriveBytes.GetBytes(keySizeValue / 8); var ivBytes = deriveBytes.GetBytes(blockSizeValue / 8); var symmetricKey = new SymmetricKey(keyBytes, ivBytes); return(symmetricKey); } }