0

Je joue avec Asymmetric Encryption and Decryption, mais je ne comprends pas les résultats que j'obtiens lorsque j'utilise VerifySignedByAsymKey().VerifySignedByAsymKey() ne renvoie pas la valeur attendue

Pourquoi ceci:

CREATE ASYMMETRIC KEY myasymkey 
WITH ALGORITHM = RSA_2048 
ENCRYPTION BY PASSWORD = '123pass!'; 
GO 

Select VerifySignedByAsymKey(AsymKey_ID('myasymkey'), 
    'Greg', 
    EncryptByAsymKey(AsymKey_ID('myasymkey'), 'Greg')); 
GO 

Produire 0? Je m'attendais à ce que ce soit 1.

Répondre

0

Vous avez seulement crypté les données, pas signé.

Voir SignByAsymKey(). L'exemple suivant renvoie 1:

declare @clear varchar(128) 
set @clear = 'Greg' 
Select VerifySignedByAsymKey(AsymKey_ID('myasymkey'), @clear, 
     SignByAsymKey(AsymKey_ID('myasymkey'), @clear, N'123pass!')) 
+0

Merci, quel est le point d'utiliser 'SignByAsymKey()' plutôt que 'EncryptByAsymKey()'? – Greg

+0

La signature produit une "signature", qui est un condensé (hachage) du texte en clair qui est ensuite chiffré avec la clé symétrique. La signature est un moyen de vérifier que les données d'origine n'ont pas été altérées. Pour les exemples non triviaux, il est également beaucoup plus court que le texte chiffré; 128 octets pour une longueur de clé de 1024 octets ou 256 octets pour une longueur de clé de 256 octets. – RickNZ

Questions connexes