Teóricamente, puede usar cualquier algoritmo de cifrado, ya que ASCII es solo una forma de leer binarios.
Sobre los problemas que tiene con el cifrado RC4 en SQL, sospecho que no tiene nada que ver con el algoritmo de cifrado, sino con la conversión que usa de / a ASCII.
También tenga en cuenta que ASCII no admite todos los caracteres especiales, ya que solo hay 256 caracteres posibles al codificar en 8 bits, como es el caso con ASCII. ¿Puedes dar algunos ejemplos de personajes especiales que plantean problemas? Si dichos caracteres especiales no están en ASCII, probablemente deba utilizar la codificación ANSI.
- ¿Es importante el conocimiento de la informática para un ingeniero aeronáutico?
- ¿Qué son los personajes de escape?
- ¿Puedo comenzar a aprender herramientas de big data (Hadoop y MapReduce) antes de aprender Machine Learning?
- ¿Debo ir a UCSD, Brown, Yale, Columbia o Dartmouth para CS?
- Cómo llevar la informática a escala de Internet a todas las empresas del planeta
Dicho todo esto, la solución más fácil sería utilizar la capacidad de SQL Server en sí mismo, donde solo puede especificar que un campo / columna necesita ser encriptado (en SQL Server 2008 o posterior). Microsoft tiene una excelente página de MSDN que explica qué transacción de Transact-SQL puede usar para especificar el cifrado mediante contraseña o certificado. Aquí hay un ejemplo de cómo configurar el cifrado basado en contraseña en una columna usando la transacción ALTER TABLE:
USE AdventureWorks2012;
–Si no hay una clave maestra, cree una ahora.
SI NO EXISTE
(SELECCIONAR * DESDE sys.symmetric_keys DONDE symmetric_key_id = 101)
CREAR ENCRIPTACIÓN DE CLAVE MAESTRA POR
CONTRASEÑA = ‘23987hxJKL95QYV4369 # ghf0% lekjg5k3fd117r $$ # 1946kcj $ n44ncjhdlj’
IR
CREAR CERTIFICADO Ventas09
WITH SUBJECT = ‘Números de tarjeta de crédito del cliente’;
IR
CREAR CLAVE SIMÉTRICA CreditCards_Key11
CON ALGORITMO = AES_256
ENCRIPTACIÓN POR CERTIFICADO Sales09;
IR
– Cree una columna en la que almacenar los datos cifrados.
ALTER TABLE Sales.CreditCard
AGREGAR CardNumber_Encrypted varbinary (128);
IR
– Abra la clave simétrica con la que cifrar los datos.
LLAVE SIMÉTRICA ABIERTA CreditCards_Key11
DECRIPCIÓN POR CERTIFICADO Sales09;
– Cifre el valor en la columna CardNumber usando el
– clave simétrica CreditCards_Key11.
– Guarde el resultado en la columna CardNumber_Encrypted.
ACTUALIZACIÓN Sales.CreditCard
SET CardNumber_Encrypted = EncryptByKey (Key_GUID (‘CreditCards_Key11’)
, CardNumber, 1, HashBytes (‘SHA1’, CONVERT (varbinary
, CreditCardID)));
IR
– Verificar el cifrado.
– Primero, abra la clave simétrica con la que descifrar los datos.
LLAVE SIMÉTRICA ABIERTA CreditCards_Key11
DECRIPCIÓN POR CERTIFICADO Sales09;
IR
– Ahora enumere el número de tarjeta original, el número de tarjeta encriptada,
– y el texto cifrado descifrado. Si el descifrado funcionó,
– el número original coincidirá con el número descifrado.
SELECT CardNumber, CardNumber_Encrypted
COMO ‘Número de tarjeta cifrada’, CONVERTIR (nvarchar,
DecryptByKey (CardNumber_Encrypted, 1,
HashBytes (‘SHA1’, CONVERT (varbinary, CreditCardID))))
COMO ‘Número de tarjeta descifrado’ DE Sales.CreditCard;
IR