Événements
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Notes
Cet article s’applique à Windows.
Vous pouvez utiliser la classe CspParameters pour accéder aux périphériques de chiffrement matériel. Par exemple, vous pouvez utiliser cette classe pour intégrer votre application à une carte à puce, à un générateur matériel de nombres aléatoires ou à une implémentation matérielle d'un algorithme de chiffrement.
La classe CspParameters crée un fournisseur de services de chiffrement (CSP) qui accède à un périphérique de chiffrement matériel correctement installé. Vous pouvez vérifier la disponibilité d’un fournisseur de services de chiffrement en inspectant la clé de Registre suivante à l’aide de l’Éditeur du Registre (Regedit.exe) : HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
Créez une instance de la classe CspParameters, en passant le type de fournisseur entier et le nom du fournisseur au constructeur.
Passez les indicateurs appropriés à la propriété Flags du nouvel objet CspParameters. Par exemple, passez l'indicateur UseDefaultKeyContainer.
Créez une instance d'une classe AsymmetricAlgorithm (par exemple, la classe RSACryptoServiceProvider), en passant l'objet CspParameters au constructeur.
Signez vos données à l'aide de l'une des méthodes Sign
, puis vérifiez vos données à l'aide de l'une des méthodes Verify
.
Créez une instance de la classe CspParameters, en passant le type de fournisseur entier et le nom du fournisseur au constructeur.
Créez une instance de RNGCryptoServiceProvider, en passant l'objet CspParameters au constructeur.
Créez une valeur aléatoire à l'aide de la méthode GetBytes ou GetNonZeroBytes.
L'exemple de code suivant montre comment signer des données à l'aide d'une carte à puce. L'exemple de code crée un objet CspParameters qui expose une carte à puce, puis initialise un objet RSACryptoServiceProvider à l'aide du fournisseur de services de chiffrement. L'exemple de code signe et vérifie certaines données.
En raison de problèmes de collision avec SHA1, nous recommandons au minimum SHA256.
using namespace System;
using namespace System::Security::Cryptography;
int main()
{
// To identify the Smart Card CryptoGraphic Providers on your
// computer, use the Microsoft Registry Editor (Regedit.exe).
// The available Smart Card CryptoGraphic Providers are listed
// in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
// Create a new CspParameters object that identifies a
// Smart Card CryptoGraphic Provider.
// The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
// The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
CspParameters^ csp = gcnew CspParameters( 1,L"Schlumberger Cryptographic Service Provider" );
csp->Flags = CspProviderFlags::UseDefaultKeyContainer;
// Initialize an RSACryptoServiceProvider object using
// the CspParameters object.
RSACryptoServiceProvider^ rsa = gcnew RSACryptoServiceProvider( csp );
// Create some data to sign.
array<Byte>^data = gcnew array<Byte>{
0,1,2,3,4,5,6,7
};
Console::WriteLine( L"Data : {0}", BitConverter::ToString( data ) );
// Sign the data using the Smart Card CryptoGraphic Provider.
array<Byte>^sig = rsa->SignData( data, L"SHA1" );
Console::WriteLine( L"Signature : {0}", BitConverter::ToString( sig ) );
// Verify the data using the Smart Card CryptoGraphic Provider.
bool verified = rsa->VerifyData( data, L"SHA1", sig );
Console::WriteLine( L"Verified : {0}", verified );
}
using System;
using System.Runtime.Versioning;
using System.Security.Cryptography;
namespace SmartCardSign
{
[SupportedOSPlatform("windows")]
class SCSign
{
static void Main(string[] args)
{
// To identify the Smart Card CryptoGraphic Providers on your
// computer, use the Microsoft Registry Editor (Regedit.exe).
// The available Smart Card CryptoGraphic Providers are listed
// in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
// Create a new CspParameters object that identifies a
// Smart Card CryptoGraphic Provider.
// The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
// The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
CspParameters csp = new CspParameters(1, "Schlumberger Cryptographic Service Provider");
csp.Flags = CspProviderFlags.UseDefaultKeyContainer;
// Initialize an RSACryptoServiceProvider object using
// the CspParameters object.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
// Create some data to sign.
byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };
Console.WriteLine("Data : " + BitConverter.ToString(data));
// Sign the data using the Smart Card CryptoGraphic Provider.
byte[] sig = rsa.SignData(data, "SHA1");
Console.WriteLine("Signature : " + BitConverter.ToString(sig));
// Verify the data using the Smart Card CryptoGraphic Provider.
bool verified = rsa.VerifyData(data, "SHA1", sig);
Console.WriteLine("Verified : " + verified);
}
}
}
Imports System.Security.Cryptography
Module SCSign
Sub Main(ByVal args() As String)
' To identify the Smart Card CryptoGraphic Providers on your
' computer, use the Microsoft Registry Editor (Regedit.exe).
' The available Smart Card CryptoGraphic Providers are listed
' in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
' Create a new CspParameters object that identifies a
' Smart Card CryptoGraphic Provider.
' The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
' The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.
Dim csp As New CspParameters(1, "Schlumberger Cryptographic Service Provider")
csp.Flags = CspProviderFlags.UseDefaultKeyContainer
' Initialize an RSACryptoServiceProvider object using
' the CspParameters object.
Dim rsa As New RSACryptoServiceProvider(csp)
' Create some data to sign.
Dim data() As Byte = {0, 1, 2, 3, 4, 5, 6, 7}
Console.WriteLine("Data : " + BitConverter.ToString(data))
' Sign the data using the Smart Card CryptoGraphic Provider.
Dim sig As Byte() = rsa.SignData(data, "SHA1")
Console.WriteLine("Signature : " + BitConverter.ToString(sig))
' Verify the data using the Smart Card CryptoGraphic Provider.
Dim verified As Boolean = rsa.VerifyData(data, "SHA1", sig)
Console.WriteLine("Verified")
End Sub
End Module
Incluez les espaces de noms System et System.Security.Cryptography.
Vous devez disposer d'un lecteur de carte à puce et de pilotes installés sur votre ordinateur.
Vous devez initialiser l'objet CspParameters à l'aide des informations spécifiques à votre lecteur de cartes. Pour plus d'informations, consultez la documentation de votre lecteur de cartes.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications intelligentes
17 mars, 23 h - 21 mars, 23 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Explore device encryption features - Training
This module explains the benefits of using encryption to protect drives and files against unauthorized access.
Documentation
Signatures de chiffrement - .NET
En savoir plus sur : Signatures de chiffrement
Comment : stocker des clés asymétriques dans un conteneur de clés - .NET
Découvrez comment stocker des clés asymétriques dans un conteneur de clés dans .NET. Découvrez comment créer une clé asymétrique, l’enregistrer dans un conteneur de clés et récupérer et supprimer la clé.
Procédure : utiliser la protection des données - .NET
Découvrez comment utiliser la protection des données en accédant à l’API de protection des données (DPAPI) dans .NET.