dotnet add package EasyTotp --version 1.2.1
NuGet\Install-Package EasyTotp -Version 1.2.1
<PackageReference Include="EasyTotp" Version="1.2.1" />
paket add EasyTotp --version 1.2.1
#r "nuget: EasyTotp, 1.2.1"
// Install EasyTotp as a Cake Addin #addin nuget:?package=EasyTotp&version=1.2.1 // Install EasyTotp as a Cake Tool #tool nuget:?package=EasyTotp&version=1.2.1
Easy-TOTP, A Time-Based authorization token generator library for C#
One easy and secure way to communicate between your web application and your Restful backend services in a micro-service driven architecture is to use a dynamic API-KEY via Time-Based One Time algorithm instead of a constant API Key or JSON Token. each time that the web application sends a request to any of the Restful backend servers, it will include a new API Key which has been generated by the Easy TOTP library. On the service side, by using the same Easy TOTP library the same API-Key can be generated to be compared with the generated API_Key by the web application in order to authenticate the request.
Easy-TOTP 's Benefits
- Easy to implement and use
The API-Keys generated by Easy TOTP are valid in short time span which will be given to the library on the initialization as "Time Step".
string Key = "12345678901234567890123456789012"; //32 chars var totp = new Totp() .Secret(Key) .Length(8) .ValidFor(TimeSpan.FromSeconds(5)); var output = totp.Compute(); //output = 12345678
Usage With Encryption
string Key = "12345678901234567890123456789012"; //32 chars string _aesKey = "12345678901234567890123456789012"; //32 chars string _aesIv = "1234567890123456"; //16 chars var totp = new Totp() .Secret(Key) .Length(8) .ValidFor(TimeSpan.FromSeconds(5)) .UseDefaultEncryptor(_aesKey,_aesIv); var output = Convert.ToBase64String(totp.ComputeEncrypted()); //output = DV/tzyq8YG+BRZGSpOVNZQ==
Happy coding 😃
|Product||Versions 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-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||netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed.|
|.NET Standard||netstandard2.0 is compatible. netstandard2.1 was computed.|
|.NET Framework||net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed.|
|MonoAndroid||monoandroid was computed.|
|MonoMac||monomac was computed.|
|MonoTouch||monotouch was computed.|
|Tizen||tizen40 was computed. tizen60 was computed.|
|Xamarin.iOS||xamarinios was computed.|
|Xamarin.Mac||xamarinmac was computed.|
|Xamarin.TVOS||xamarintvos was computed.|
|Xamarin.WatchOS||xamarinwatchos was computed.|
- No dependencies.
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.