Aracılığıyla paylaş


MachineKey.Protect(Byte[], String[]) Yöntem

Tanım

Belirtilen verileri şifreleyerek veya imzalayarak korur.

public:
 static cli::array <System::Byte> ^ Protect(cli::array <System::Byte> ^ userData, ... cli::array <System::String ^> ^ purposes);
public static byte[] Protect(byte[] userData, params string[] purposes);
static member Protect : byte[] * string[] -> byte[]
Public Shared Function Protect (userData As Byte(), ParamArray purposes As String()) As Byte()

Parametreler

userData
Byte[]

Korunacak veriler. Bu veriler düz metin olarak geçirilir.

purposes
String[]

Verilerin amaçlarının listesi. Bu değer belirtilirse, döndürülen şifre metninin deşifre edilmesi için aynı listenin yöntemine geçirilmesi Unprotect(Byte[], String[]) gerekir.

Döndürülenler

Byte[]

Şifre metni verileri.

Özel durumlar

userData Parametresi null.

Amaçlar dizisi yalnızca bir veya daha fazla boşluk girdisi içerir.

Açıklamalar

Bu yöntem, çağıranın düz metin verilerinin Encode şifrelenmesi, imzalanması veya her ikisi için de belirtilmesi gereken yönteminin yerini alır. Protect yöntemi uygun işlemi gerçekleştirir ve verileri güvenli bir şekilde korur. Bu yöntem tarafından üretilen şifre metni verileri yalnızca yöntemiyle Unprotect deşifre edilebilir.

purposes parametresi, şifre metnini belirli bir amaca kilitleyebilen isteğe bağlı bir neden listesidir. Bu parametre, bir uygulama içindeki farklı alt sistemler tarafından gerçekleştirilen şifreleme işlemlerini yalıtmanızı sağlar. Kötü amaçlı bir istemci, bir alt sistemin Protect yönteminin sonucunu alamamalı ve bunu başka bir alt sistemin Unprotect yöntemine giriş olarak beslememelidir ve bu da uygulama güvenliğini tehlikeye atabilir. parametresi, purposes korumalı verilerin yalnızca ilk oluşturan bileşen tarafından kullanılabilmesini sağlamaya yardımcı olur. Uygulamalar, her alt sistemin benzersiz purposes bir liste kullandığına emin olmalıdır.

Örneğin, bir kimlik doğrulama belirtecini korumak veya korumasını silmek için aşağıdaki örnekte olduğu gibi kodu kullanarak yöntemini çağırabilirsiniz:

MachineKey.Protect(..., "Authentication token");
MachineKey.Unprotect(..., "Authentication token");
MachineKey.Protect(..., "Authentication token")
MachineKey.Unprotect(..., "Authentication token")

Uygulamalar parametreyi purposes dinamik olarak oluşturabilir. Bu durumda, sistemin başka bir bölümü tarafından kullanılan belirteçle eşleşen bir belirteçle eşleşen kötü amaçlı bir istemci oluşturma girişinin riskini en aza indirmek için kullanıcı tarafından sağlanan değerleri sabit bir değerle (" " + kullanıcı adı gibiUsername:) ön eke ekleyin. Dinamik olarak oluşturulan tüm dizeler sabit dizelerden sonra gelmelidir. Örneğin, belirli bir kullanıcıya bağlı bir özel iletiyi korumak veya korumasını silmek için aşağıdaki örneğe benzer bir kod kullanın:

MachineKey.Protect(..., "Private message", "Recipient: " + username);
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);
MachineKey.Protect(..., "Private message", "Recipient: " + username)
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)

Unprotect yöntemi çağrıldığında, parametresi için purposes sağlanan değer yöntemine sağlanan değerle Protect aynı olmalıdır. Aksi takdirde işlem bir CryptographicException özel durumla başarısız olur.

Özellik seçeneğine MachineKeyCompatibilityMode.Framework45 ayarlanmasa MachineKeySection.CompatibilityModeFramework45 bile bu yöntem için gerekli olan yapılandırma ayarları gereklidir.

Şunlara uygulanır