Sunday, May 14, 2023

Password encryption option so even DBA can’t see the password in .NET core

 In .NET Core, you can use cryptographic functions to encrypt passwords and securely store them in a database. One common approach is to use a one-way hashing algorithm with a salt. Here's a simplified example of how you can accomplish this:

1. Add the necessary NuGet package: Install the System.Security.Cryptography package to gain access to cryptographic functions.

2. Generate a salt: A salt is a random value that adds uniqueness to each hashed password, making it harder to crack. You can generate a salt using a cryptographic random number generator. Here's an example:

byte[] salt = new byte[16];

using (var rng = RandomNumberGenerator.Create())

{

    rng.GetBytes(salt);

}

3. Hash the password: Use a secure hashing algorithm, such as bcrypt, PBKDF2, or Argon2, to hash the password along with the salt. The salt should be stored alongside the hashed password in the database. Here's an example using the bcrypt algorithm:


string password = "myPassword";

string hashedPassword = BCrypt.Net.BCrypt.HashPassword(password, salt: salt);

4. Verify a password: When a user attempts to log in, you can verify their password by comparing the stored hashed password with the newly hashed password using the same salt. Here's an example:

string userEnteredPassword = "myPassword";

bool passwordMatches = BCrypt.Net.BCrypt.Verify(userEnteredPassword, hashedPassword);

By following these steps, even a DBA with access to the database would not be able to see the original password, as it is never stored in plain text. Only the hashed password and the salt are stored, and the verification process compares the hashed values.


Batch Processing and Retry Mechanism for CSV Files in Azure

 You can consider using two Azure services for your scenario of downloading multiple CSV files, parsing them, transforming the data, and tracking the success or failure of processing: 

#1. Storage Queue with Azure Functions:

  • Azure Blob Storage can be used to store the CSV files, and a Storage Queue can manage the processing workflow.
  • Set up an Azure Function with a queue trigger to trigger the function for processing a CSV file whenever a new message arrives in the queue.
  • Implement the parsing, transformation, and writing logic for each file within the function.
  • Track the success or failure of processing by writing the status or any error information to another storage location, such as a separate blob container or a database.
  • To enable retries, configure the Storage Queue with a visibility timeout. Messages that are not deleted after processing become visible again after a specified duration, allowing for automatic retries.

#2. Azure Batch with Spot VMs:

  • Azure Batch, a managed service, enables you to run large-scale parallel and batch computing jobs.
  • Create an Azure Batch job that defines the tasks for downloading, parsing, transforming, and writing the CSV files.
  • Utilize Azure Spot VMs, which are low-priority virtual machines available at a significantly reduced price, to handle large workloads cost-effectively.
  • Azure Batch provides a mechanism to track task execution and the overall job status. Retrieve information on the success or failure of each task and programmatically handle retries if necessary.

The choice between these approaches depends on factors such as the complexity of the processing logic, workload scale, and specific requirements of your use case.


Friday, May 12, 2023

[SC] DeleteService FAILED 1072: The specified service has been marked for deletion.

 The error message you encountered ("DeleteService FAILED 1072: The specified service has been marked for deletion") indicates that the Windows service you are trying to delete has already been marked for deletion. This usually occurs when the service is in the process of being uninstalled or has encountered an issue during the uninstallation process.


To resolve this issue, you can try the following steps:


#1 . Restart the computer: A system restart can help clear any pending operations and release the service from the "marked for deletion" state. After restarting the computer, try deleting the service again using the sc command or InstallUtil tool.


#2. Check running processes: Ensure that there are no instances of the service still running in the background. Open Task Manager and check the "Processes" or "Details" tab for any processes related to the service. If you find any, terminate them and then attempt to delete the service again.


#3. Use PowerShell: If the sc command did not work, you can try using PowerShell to forcefully remove the service. Open PowerShell as an administrator and run the following command:



Remove-Service -Name ServiceName -Force

Replace "ServiceName" with the actual name of the service you want to delete. This command will attempt to remove the service forcefully.


If none of these steps work, it is possible that there might be an issue with the service installation or the system itself. In such cases, you may need to seek further assistance or consult with a Windows system administrator for guidance.

How cache can be enabled for embeded text as well for search query results in Azure AI ?

 Great question, Rahul! Caching in the context of Azure AI (especially when using **RAG pipelines with Azure OpenAI + Azure AI Search**) can...