Çok sayıda farklı C# şifreleme örneğine bakıyordum. Çoğu örnekte, Şifreleme Anahtarı ve Başlangıç Vektörü (IV) şifreleme/şifre çözme yöntemlerine bir bayt dizisi olarak geçirilir.Şifreleme anahtarını ve IV'ü dizeleri olarak Kaydetme/Dönüştürme
Anahtar ve IV dizeleri olarak saklamak istiyorum. Donanım Güvenliği Modülünde Anahtar ve SQL Server veritabanındaki bir nvarchar olarak IV.
Anahtar ve IV'ün dize olarak nasıl düzgün bir şekilde dönüştürülebileceğiyle ilgili olarak podyuma koşuyorum. Bazı örnekler Base64 Kodlaması'nı kullanırken diğer örnekler Encoding.UTF8
'u kullanır. Ben şifreleme yönteminin içine IV'ün bu dize temsilini geçmek ve daha sonra geri dönüştürmek zaman İşte
using (var aesProvider = new AesCryptoServiceProvider())
{
aesProvider.GenerateIV();
var ivBase64 = Convert.ToBase64String(aesProvider.IV);
return ivBase64;
}
bir IV üretir ve bir Base64 dizeye dönüştürür bir örnektir Bir bayt dizisi aşağıdaki kod IV uygun boyut değil diyerek başarısız olur.
byte[] initVectorBytes = Encoding.UTF8.GetBytes(initializationVector);`
// intermediate code excluded for brevity
ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes);
bir bayt dizisi ve dize gösterimi arasında ileri ve geri bir şifreleme anahtarı ve IV dönüştürülmesi standart bir yolu var mı?
[Bu şifreleme en iyi cevaptır] (http://stackoverflow.com/a/10366194/542251) buldum. Ben sadece bu kodu şimdi kullanıyorum. Bir string BTW – Liam
@ Lii kabul eder - Harika örnek için teşekkürler! Kod örneğinden hangisini kullanıyorsunuz? Listelenen bir grup var. – webworm
Bu bağlıdır! Son zamanlarda SimpleDecryptWithPassword kullanmıştım, güvenlik konusunda endişelenmemiştim, esasen bazı verileri gizlemek istemiştim. Kullandığınız yöntem, – Liam