There is a newer version of this package available.
See the version list below for details.
dotnet add package OtpSharp --version
NuGet\Install-Package OtpSharp -Version
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="OtpSharp" Version="" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OtpSharp --version
#r "nuget: OtpSharp,"
#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 OtpSharp as a Cake Addin
#addin nuget:?package=OtpSharp&version=

// Install OtpSharp as a Cake Tool
#tool nuget:?package=OtpSharp&version=

This is an implementation of HOTP and TOTP which are commonly used for multi factor authentication by using a shared key between the client and the server to generate and verify one time use codes.  This library is capable of generating and verifying both TOTP and HOTP authentication codes.  The calculations in this library are known to be compatible with Google 2-Step Verification and consequently the Google Authenticator smartphone app.  It is also known to be able to generate codes for Amazon Web Services Multi Factor Authentication and Dropbox 2 step authentication.  It should work with any other service or client that is RFC compliant.

This library is released under an MIT license. No warranty is provided as to the correctness of the library and the consumer of the library assumes all risk for the use thereof, as per the MIT license.

Every effort has gone into implementing this library in accordance with the RFCs mentioned above. However it is up to the users of this library to read through the RFCs and ensure that this implementation is in accordance with the security procedures outlined therein.

The implementation includes the code calculation as well as simple verification. Persistence of the keys, secure key storage, ensuring that a single code can't be validated multiple times and other things are not a part of this library. Thus far those functions (and any others mentioned in the RFCs) are up to the consumer of this library.

For documentation please visit the project website.

Product Compatible and additional computed target framework versions.
.NET Framework net40 is compatible.  net403 was computed.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on OtpSharp:

Package Downloads

A simple enterprise content management system


Adds two factor authentication to an MVC project using google's authenticator. Relies on Microsoft's ASP.NET Identity service.


Bitskins.com C# .net API

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated 1,409,486 11/16/2015 37,738 1/17/2015 16,784 7/13/2014 2,474 7/12/2014 5,733 10/25/2013 2,704 8/9/2013 2,656 7/29/2013 3,039 3/12/2013 2,429 3/12/2013 2,405 3/12/2013 2,382 3/11/2013 2,364 3/8/2013 2,461 3/2/2013
1.0.5 2,440 3/1/2013

1.1 Change the Key api to no longer require returning the plaintext key. (will break any custom key implementations). Move the get URL from the Otp to a static Url type.

1.0.6 Change the computed values from ints to padded strings. (Breaking change but is a more appropriate API)

1.0.5 Change package name from OTP-Sharp to OtpSharp

1.0.4 Changed the Protected Key API to be more explicit (may break existing direct useage of the protected key)

The protected key no longer implicitly causes side effects (destroying the plaintext key provided must be done explicitly)

Added a time correction class with experimental NTP abilities.