Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }