DataJuggler.Core.Cryptography 1.0.11

dotnet add package DataJuggler.Core.Cryptography --version 1.0.11                
NuGet\Install-Package DataJuggler.Core.Cryptography -Version 1.0.11                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataJuggler.Core.Cryptography" Version="1.0.11" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DataJuggler.Core.Cryptography --version 1.0.11                
#r "nuget: DataJuggler.Core.Cryptography, 1.0.11"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DataJuggler.Core.Cryptography as a Cake Addin
#addin nuget:?package=DataJuggler.Core.Cryptography&version=1.0.11

// Install DataJuggler.Core.Cryptography as a Cake Tool
#tool nuget:?package=DataJuggler.Core.Cryptography&version=1.0.11                

Please visit my YouTube channel and subscribe if you haven't already, as I make new videos often:

https://www.youtube.com/channel/UCaw0joqvisKr3lYJ9Pd2vHA

I make announcements on Twitter when new versions are released, follow me: Data_Juggler

And I have over two dozen projects on GitHub: github.com/DataJuggler

Thanks,

Data Juggler

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.11 10,495 1/16/2020
1.0.10 487 12/21/2019
1.0.9 492 12/19/2019
1.0.8 492 12/19/2019
1.0.7 489 12/19/2019
1.0.5 462 12/7/2019
1.0.4 456 12/7/2019
1.0.3 485 12/7/2019
1.0.2 466 12/7/2019

Version 1.0.11 - I added a new optional parameter for VerifyHash that allows you to state that the userTypedPassword is actually a PasswordHash itself. This use case is designed for use with ProtectedLocalStorage to allow you to store the password hash on the client browser.
This validation compares two encrypted passowrd hash strings that they are equal. As a test of security, it is verified that the encryptedPasswordHash stored can be used to create the salt. If the string decrypts with the keycode given and the salt is valid 16 bytes and the strings match exactly then this is considered verified also.

Version 1.0.10 - I started testing today for the first time using the Nuget package and I couldn't get the class to show up. Trying again with the code set to Debug mode as it worked before I switched to Release.

Version 1.0.9 - I am trying recreating the salt every time. Some password fail up to max retires
count, and perhaps the salt is the problem. I noticed NotASecret default password is where this
problem occurs. I might change it to something else if this still fails.

Version 1.0.8 - I added a verifyRetries parameter to GeneratePasswordHash method. If set to true,
the method will try and verify if it cannot be verified a new hash will be created and tried again up
to the verirfyRetries count.

Version 1.0.7 - I added try catches to all the methods.

The first release had the wrong namespace.