public SQLServerCryptoAlgorithm(SQLServerCryptoVersion sqlCryptoVersion) { Version = sqlCryptoVersion; switch (Version) { case SQLServerCryptoVersion.V1: Hash = SHA1.Create(); Symmetric = TripleDES.Create(); KeySize = 16; break; case SQLServerCryptoVersion.V2: Hash = SHA256.Create(); Symmetric = Aes.Create(); KeySize = 32; break; default: throw new Exception("Unsupported SQLServerCryptoVersion"); } Symmetric.Padding = PaddingMode.PKCS7; Symmetric.Mode = CipherMode.CBC; }
public static HexString EncryptByPassPhrase(string passphrase, string cleartext, int add_authenticator, string authenticator, SQLServerCryptoVersion sqlServerCryptoVersion) { var sqlServerCryptoAlgorithm = new SQLServerCryptoAlgorithm(sqlServerCryptoVersion); sqlServerCryptoAlgorithm.SetKeyFromPassPhrase(passphrase); byte[] header = new SQLServerCryptoHeader() { Version = sqlServerCryptoVersion, InitializationVector = sqlServerCryptoAlgorithm.Symmetric.IV }; var sqlServerCryptoMessage = new SQLServerCryptoMessage() { AddAuthenticator = add_authenticator > 0, Authenticator = authenticator }; sqlServerCryptoMessage.CreateFromClearText(cleartext); byte[] message = sqlServerCryptoMessage; var encryptedMessage = sqlServerCryptoAlgorithm.Symmetric .CreateEncryptor() .TransformFinalBlock(message, 0, message.Length); return(new HexString(header.Concat(encryptedMessage).ToArray())); }
public static HexString EncryptByPassPhrase(string passphrase, string cleartext, SQLServerCryptoVersion sqlServerCryptoVersion) => EncryptByPassPhrase(passphrase, cleartext, 0, string.Empty, sqlServerCryptoVersion);
public SQLServerCryptoHeader(SQLServerCryptoVersion sqlServerCryptoVersion = SQLServerCryptoVersion.V1) => Version = sqlServerCryptoVersion;