Você pode use SQLCLR para chamar a criptografia do C#, embora essa seja a abordagem errada. Se você precisar fazer um algoritmo personalizado, você deve encapsular isso em uma função SQLCLR para que possa ser usado em uma instrução UPDATE ou mesmo em um INSERT ou SELECT ou em qualquer lugar. Algo como:
public class SP
{
[Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)]
public static SqlString EncryptByAES(SqlString TextToEncrypt)
{
return DoSomething(TextToEncrypt.Value);
}
}
Então você pode usar essa função da seguinte forma:
UPDATE tb
SET tb.FieldA = EncryptByAES(tb.FieldA)
FROM dbo.TableName tb
WHERE tb.FieldA some_test_to_determine_that_FieldA_is_not_alreay_encrypted;
MAS , antes de escrever um algoritmo de criptografia personalizado, convém verificar as várias funções ENCRYPTBY / DECRYPTBY emparelhadas integradas que podem fazer exatamente o que você precisa:
-
ENCRYPTBYASYMKEY / DECRYPTBYASYMKEY
-
ENCRYPTBYCERT / DECRYPTBYCERT
-
ENCRYPTBYKEY / DECRYPTBYKEY
-
ENCRYPTBYPASSPHRASE / DECRYPTBYPASSPHRASE