public void RandomGeneratorShouldGenerateStringWithExactlySpecifiedLength() { var random = new RandomGenerator(); for (int i = 0; i <= 50; i++) { string result = random.GenerateRandomString(i); Assert.AreEqual(result.Length, i); } }
public void RandomGeneratorShouldGenerateNumbersInRangeInclusive() { var random = new RandomGenerator(); for (int i = 0; i < 50; i++) { int number = random.GenerateRandomNumber(1, 3); Assert.IsTrue(number >= 1 && number <= 3); } }
public void TestAes1000WithCertificate() { var cert2 = LoadCertificate(); //var publicKey = X509CertificateHelper.GetRSACryptoServiceProviderFromPublicKey(cert2); var keyProtector = X509CertificateHelper.GetKeyEncryptionKey(cert2); // generate a protected key var gen = new ProtectedX509Certificate2Generator(); var policy = new CertificatePolicy() { CommonName = "Testing protected certs", AllPurposes = true, ValidForDays = 2 }; var protectedKey = Task.Run(() => gen.IssueNewCertificateAsync(keyProtector, policy)).GetAwaiter().GetResult(); // save the key to test var keyOutputFilePath = (CERT_FOLDER + "temp\\pk-" + protectedKey.KeyId + ".kpk"); var fi = new FileInfo(keyOutputFilePath); if (!fi.Directory.Exists) { fi.Directory.Create(); } var bytes = Task.Run(() => protectedKey.ToByteArrayAsync()).GetAwaiter().GetResult(); File.WriteAllBytes(fi.FullName, bytes); Console.WriteLine(fi.FullName); var list = new List<string>(); var listEnc = new List<AsymmetricallyEncryptedObject>(); using (var privateKey = Task.Run(() => protectedKey.ToKeyEncyrptionKeyAsync(keyProtector)).GetAwaiter().GetResult()) { //var publicKey = privateKey.PublicKey.Key as RSACryptoServiceProvider; //File.WriteAllText(fi.FullName + "_A.cer", privateKey.PublicKeyToPEM()); int length = 100; var rand = new RandomGenerator(); for (int i = 0; i < length; i++) { var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; list.Add(stringToEncrypt); var asymEnc = new AsymmetricEncryptor(AsymmetricStrategyOption.Aes256_1000); var asymObj = asymEnc.EncryptObjectAsync(stringToEncrypt, privateKey).GetAwaiter().GetResult(); listEnc.Add(asymObj); var decrypted = asymEnc.DecryptObjectAsync(asymObj, privateKey).GetAwaiter().GetResult(); Assert.AreEqual(stringToEncrypt, decrypted); } } // lets reload a new private key var fileBytes = File.ReadAllBytes(fi.FullName); var encKey = new AsymmetricallyEncryptedObject(); encKey.LoadFromByteArray(fileBytes); var protectedKey2 = new ProtectedX509Certificate2(protectedKey.KeyId, encKey); using (var privateKey = Task.Run(() => protectedKey2.ToKeyEncyrptionKeyAsync(keyProtector)).GetAwaiter().GetResult()) { var asymEnc = new AsymmetricEncryptor(AsymmetricStrategyOption.Aes256_1000); int i = 0; foreach (var line in list) { var asymObj = listEnc[i]; var decrypted = asymEnc.DecryptObject(asymObj, privateKey); Assert.AreEqual(line, decrypted); i++; } } }
public void TestAes1000WithCertificateAndSerialization() { var cert2 = LoadCertificate(); var publicKey = new X509CertificatePublicKey(cert2); var privateKey = new X509Certificate2KeyEncryptionKey(cert2); int length = 100; var rand = new RandomGenerator(); //for (int i = 0; i < length; i++) //{ // var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; // var asymEnc = new AsymmetricEncryptor(AsymmetricStrategyOption.Aes256_1000); // var asymObj = asymEnc.EncryptObject(stringToEncrypt, cert2.Thumbprint.ToString().ToLower(), publicKey); // var decrypted = asymEnc.DecryptObject(asymObj, privateKey); // Assert.AreEqual(stringToEncrypt, decrypted); //} var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; var encryptor = new AsymmetricEncryptor() { AsymmetricStrategy = AsymmetricStrategyOption.Aes256_1000 }; var asymEncObj = encryptor.EncryptObjectAsync(stringToEncrypt, publicKey).GetAwaiter().GetResult(); asymEncObj.PublicMetadata = new Dictionary<string, string>(); asymEncObj.PublicMetadata["keyA"] = "valueA"; asymEncObj.PublicMetadata["keyB"] = "valueB"; asymEncObj.KeyId = cert2.Thumbprint.ToLower(); var asymEncObjDirectSerializedBytes = Serializer.SerializeToByteArray(asymEncObj); // deserialize var asymEncObj2 = Serializer.DeserializeFromByteArray(asymEncObjDirectSerializedBytes) as AsymmetricallyEncryptedObject; Assert.IsNotNull(asymEncObj); Assert.IsTrue(!string.IsNullOrEmpty(asymEncObj.KeyId)); var asymEncObjBytes2 = asymEncObj.ToByteArray(); var asymEncObj3 = new AsymmetricallyEncryptedObject(); asymEncObj3.LoadFromByteArray(asymEncObjBytes2); var decrypted = encryptor.DecryptObject(asymEncObj3, privateKey) as string; Assert.AreEqual(decrypted, stringToEncrypt); // test deserializing with direct var asymEncObj4 = new AsymmetricallyEncryptedObject(); asymEncObj4.LoadFromByteArray(asymEncObjDirectSerializedBytes); var decrypted2 = encryptor.DecryptObject(asymEncObj4, privateKey) as string; Assert.AreEqual(decrypted2, stringToEncrypt); }
public void TestAes5WithDualCertificate() { var cert2 = LoadCertificate(); var publicKey = new X509CertificatePublicKey(cert2); var privateKey = new X509Certificate2KeyEncryptionKey(cert2); var cert2Dual = LoadCertificate2(); var publicKey2 = new X509CertificatePublicKey(cert2Dual); var privateKey2 = new X509Certificate2KeyEncryptionKey(cert2Dual); int length = 100; var rand = new RandomGenerator(); for (int i = 0; i < length; i++) { var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; var asymEnc = new AsymmetricEncryptor(AsymmetricStrategyOption.Aes256_5); var asymObj = asymEnc.EncryptObject(stringToEncrypt, publicKey, publicKey2); var decrypted = asymEnc.DecryptObject(asymObj, privateKey, privateKey2); Assert.AreEqual(stringToEncrypt, decrypted); } }
public void TestAes5_Bytes() { int length = 100; var rand = new RandomGenerator(); //byte[] entropy = new byte[20]; for (int i = 0; i < length; i++) { byte[] newKey = new byte[rand.RandomNumber(75, 88)]; using (var rng = new RNGCryptoServiceProvider()) { //rng.GetBytes(entropy); rng.GetBytes(newKey); } var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; var bytes = System.Text.Encoding.UTF8.GetBytes(stringToEncrypt); // base 64 var encryptedBytes = AesEncryptor.Encrypt5(bytes, newKey); var decryptedBytes = AesEncryptor.Decrypt(encryptedBytes, newKey); Assert.IsTrue(decryptedBytes.SequenceEqual(bytes)); var decryptedString = System.Text.Encoding.UTF8.GetString(decryptedBytes); Assert.AreEqual(stringToEncrypt, decryptedString); } }
public void TestAes200() { int length = 100; var rand = new RandomGenerator(); for (int i = 0; i < length; i++) { using (var password = rand.RandomSecureStringPassword(10, 50)) { var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; // base 64 var encryptedBase64 = AesEncryptor.Encrypt200(stringToEncrypt, password); var decryptedBase64 = AesEncryptor.Decrypt(encryptedBase64, password); Assert.AreEqual(stringToEncrypt, decryptedBase64); // base 36 var encryptedBase36 = AesEncryptor.Encrypt200(stringToEncrypt, password, true); var decryptedBase36 = AesEncryptor.Decrypt(encryptedBase36, password, true); Assert.AreEqual(stringToEncrypt, decryptedBase36); } } }
public void TestAes20000_Bytes() { int length = 100; var rand = new RandomGenerator(); //byte[] entropy = new byte[20]; var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < length; i++) { byte[] newKey = new byte[rand.RandomNumber(75, 88)]; using (var rng = new RNGCryptoServiceProvider()) { //rng.GetBytes(entropy); rng.GetBytes(newKey); } var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; var bytes = System.Text.Encoding.UTF8.GetBytes(stringToEncrypt); // base 64 var encryptedBytes = AesEncryptor.Encrypt20000(bytes, newKey); var decryptedBytes = AesEncryptor.Decrypt(encryptedBytes, newKey); Assert.IsTrue(decryptedBytes.SequenceEqual(bytes)); var decryptedString = System.Text.Encoding.UTF8.GetString(decryptedBytes); Assert.AreEqual(stringToEncrypt, decryptedString); Console.WriteLine(string.Format("{0:N0}\t{1}", i, stopwatch.Elapsed)); stopwatch.Stop(); stopwatch.Reset(); stopwatch.Start(); } }
public void TestAes20000() { int length = 100; var rand = new RandomGenerator(); var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i = 0; i < length; i++) { using (var password = rand.RandomSecureStringPassword(10, 50)) { var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; // base 64 var encryptedBase64 = AesEncryptor.Encrypt20000(stringToEncrypt, password); var decryptedBase64 = AesEncryptor.Decrypt(encryptedBase64, password); Assert.AreEqual(stringToEncrypt, decryptedBase64); // base 36 var encryptedBase36 = AesEncryptor.Encrypt20000(stringToEncrypt, password, true); var decryptedBase36 = AesEncryptor.Decrypt(encryptedBase36, password, true); Assert.AreEqual(stringToEncrypt, decryptedBase36); Console.WriteLine(string.Format("{0:N0}\t{1}", i, stopwatch.Elapsed)); stopwatch.Stop(); stopwatch.Reset(); stopwatch.Start(); } } }
public void TestProtectPasswordDualKey() { var cert2 = LoadCertificate(); var publicKey = new X509CertificatePublicKey(cert2); var privateKey = new X509Certificate2KeyEncryptionKey(cert2); var cert2Dual = LoadCertificate2(); var publicKey2 = new X509CertificatePublicKey(cert2Dual); var privateKey2 = new X509Certificate2KeyEncryptionKey(cert2Dual); int length = 100; var rand = new RandomGenerator(); for (int i = 0; i < length; i++) { using (var password = rand.RandomSecureStringPassword(10, 50)) { var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; // base 64 var encryptedBase64 = AesEncryptor.Encrypt1000(stringToEncrypt, password); var decryptedBase64 = AesEncryptor.Decrypt(encryptedBase64, password); Assert.AreEqual(stringToEncrypt, decryptedBase64); // base 36 var encryptedBase36 = AesEncryptor.Encrypt1000(stringToEncrypt, password, true); var decryptedBase36 = AesEncryptor.Decrypt(encryptedBase36, password, true); Assert.AreEqual(stringToEncrypt, decryptedBase36); var protectedPwStr = AsymmetricEncryptor.EncryptToBase64StringAsync(password, publicKey, publicKey2).GetAwaiter().GetResult(); var unprotectedPwdStr = AsymmetricEncryptor.DecryptFromBase64String(protectedPwStr, privateKey, privateKey2); var decryptedUnprotectedPw = AesEncryptor.Decrypt(encryptedBase64, unprotectedPwdStr); Assert.AreEqual(stringToEncrypt, decryptedUnprotectedPw); } } }