public void TestFullrun() { const string messageToEncrypt = "Important important!"; byte[] dataToEncrypt = Encoding.UTF8.GetBytes(messageToEncrypt); var hybridEncryper = new HybridRsaAes(); hybridEncryper.AssignNewRSAKeys(); RSAParameters publicKey = hybridEncryper.GetPublicRSAKey(); //public key receiver RSAParameters privateKey = hybridEncryper.GetPrivateRSAKey(); //private key receiver //Encrypt byte[] sessionKey = AbstractSecureCompareBase.GenerateRandomNumber(32); //256-bit byte[] iv = AbstractSecureCompareBase.GenerateRandomNumber(16); //128-bit byte[] encryptedData = hybridEncryper.EncryptAES(dataToEncrypt, sessionKey, iv); byte[] hmac = hybridEncryper.ComputeHmac(sessionKey, encryptedData); byte[] encryptedSessionKey = hybridEncryper.EncryptRSA(sessionKey, publicKey); //sending encrpyted file....(encryptedData, iv, hmac, encryptedSessionKey) //Decrypt byte[] decryptedSessionKey = hybridEncryper.DecryptRSA(encryptedSessionKey, privateKey); Assert.IsTrue(hybridEncryper.VerifyHmac(decryptedSessionKey, encryptedData, hmac)); byte[] decryptedData = hybridEncryper.DecryptAES(encryptedData, decryptedSessionKey, iv); Assert.IsTrue(Encoding.UTF8.GetString(decryptedData) == messageToEncrypt); }
public void TestHashPassword() { const string password = "******"; const string rightPassword = "******"; const string wrongPassword = "******"; byte[] salt = PBKDF2Impl.GenerateSalt(); byte[] encrypedPassword = PBKDF2Impl.HashPassword(Encoding.UTF8.GetBytes(password), salt); byte[] encrypedRightPassword = PBKDF2Impl.HashPassword(Encoding.UTF8.GetBytes(rightPassword), salt); byte[] encrypedWrongPassword = PBKDF2Impl.HashPassword(Encoding.UTF8.GetBytes(wrongPassword), salt); Assert.IsTrue(AbstractSecureCompareBase.Compare(encrypedPassword, encrypedRightPassword)); Assert.IsFalse(AbstractSecureCompareBase.Compare(encrypedPassword, encrypedWrongPassword)); }
public void EncryptFile(string sourceFilename, string destinationFilename, RSAParameters publicKey) { _logger.Info("get data from file"); byte[] dataToEncrypt = GetDataFromFile(sourceFilename); if (dataToEncrypt != null) { _logger.Info("generate session key"); byte[] sessionKey = AbstractSecureCompareBase.GenerateRandomNumber(32); //256-bit _logger.Info("generate IV"); byte[] iv = AbstractSecureCompareBase.GenerateRandomNumber(16); //128-bit _logger.Info("encrypt data"); byte[] encryptedData = _hybridEncrypter.EncryptAES(dataToEncrypt, sessionKey, iv); _logger.Info("generate HMAC"); byte[] hmac = _hybridEncrypter.ComputeHmac(sessionKey, encryptedData); _logger.Info("encrypt session key"); byte[] encryptedSessionKey = _hybridEncrypter.EncryptRSA(sessionKey, publicKey); _logger.Info("encrypt file extension"); string fileExtension = Path.GetExtension(sourceFilename); if (fileExtension != null) { byte[] encryptedFileExtension = _hybridEncrypter.EncryptAES(Encoding.UTF8.GetBytes(fileExtension), sessionKey, iv); _logger.Info("write data to file"); WriteDataToFile(encryptedData, hmac, encryptedSessionKey, iv, encryptedFileExtension, destinationFilename + ".sfs"); } else { _logger.Error("file extenstion is null!"); } } else { _logger.Error("data from file are null!"); } }
public void TestFullrunWithKeyShare() { const string messageToEncrypt = "Important important!"; byte[] dataToEncrypt = Encoding.UTF8.GetBytes(messageToEncrypt); var hybridEncryper = new HybridRsaAes(); hybridEncryper.AssignNewRSAKeys(); string keyString = hybridEncryper.GetPublicRSAKeyAsXml(); //sending public key string to friend.... var rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(keyString); Assert.IsTrue(hybridEncryper.GetPublicRSAKeyAsXml() == rsa.ToXmlString(false)); //Encrypt RSAParameters publicKey = rsa.ExportParameters(false); //public key receiver byte[] sessionKey = AbstractSecureCompareBase.GenerateRandomNumber(32); //256-bit byte[] iv = AbstractSecureCompareBase.GenerateRandomNumber(16); //128-bit byte[] encryptedData = hybridEncryper.EncryptAES(dataToEncrypt, sessionKey, iv); byte[] hmac = hybridEncryper.ComputeHmac(sessionKey, encryptedData); byte[] encryptedSessionKey = hybridEncryper.EncryptRSA(sessionKey, publicKey); //sending encrpyted file....(encryptedData, iv, hmac, encryptedSessionKey) //Decrypt RSAParameters privateKey = hybridEncryper.GetPrivateRSAKey(); //private key receiver byte[] decryptedSessionKey = hybridEncryper.DecryptRSA(encryptedSessionKey, privateKey); Assert.IsTrue(hybridEncryper.VerifyHmac(decryptedSessionKey, encryptedData, hmac)); byte[] decryptedData = hybridEncryper.DecryptAES(encryptedData, decryptedSessionKey, iv); Assert.IsTrue(Encoding.UTF8.GetString(decryptedData) == messageToEncrypt); }
public bool Compare(byte[] array1, byte[] array2) { _logger.Info("compare byte arrays"); return(AbstractSecureCompareBase.Compare(array1, array2)); }