Je voudrais crypter des chaînes de caractères 1500-2500 en utilisant une clé asymétrique. Il semble que RSA_2048
ne cryptera que jusqu'à 245 caractères.Cryptage asymétrique de chaînes longues
Sur le MSDN Article about EncryptByAsymKey() recommande de «ne pas crypter de grands ensembles de données à l'aide d'une clé asymétrique, mais de chiffrer les données à l'aide d'une clé symétrique forte et de chiffrer la clé symétrique à l'aide d'une clé asymétrique.
Existe-t-il un moyen de le faire sans avoir besoin du mot de passe de la clé asymétrique? ou est-ce que je vais à la mauvaise façon?
Declare @plain varchar(max), @cipher varbinary(max);
Set @plain = 'Greg';
CREATE ASYMMETRIC KEY akey WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = '123pass!';
CREATE SYMMETRIC KEY skey WITH ALGORITHM = AES_256 ENCRYPTION BY ASYMMETRIC KEY akey;
OPEN SYMMETRIC KEY skey DECRYPTION BY ASYMMETRIC KEY akey WITH PASSWORD = '123pass!';
Set @cipher = ENCRYPTBYKEY(KEY_GUID('skey'), @plain);
... write @cipher to db ...
EDIT: Je dois encore être en mesure de déchiffrer les données d'une autre application. Je souhaite que l'application publique sur notre serveur Web crypte les informations de commande client et les écrive dans une base de données. Alors seulement être en mesure de le décrypter en utilisant une autre application fonctionnant sur un serveur physiquement situé dans le bureau.
Quelque chose comme ça? http://www.sswug.org/articles/viewarticle.aspx?id=18250 –
Si vous pouvez déplacer le cryptage/décryptage dans l'application (.NET?) plutôt que de l'exécuter dans la procédure T-SQL, je vous crois aura toute la flexibilité dont vous avez besoin pour résoudre vos problèmes. –
Mais vous voulez être en mesure de les décrypter à partir d'une autre application, non? – CodesInChaos