Skip to content

Latest commit

 

History

History
142 lines (114 loc) · 5.7 KB

File metadata and controls

142 lines (114 loc) · 5.7 KB

Note: Benchmarks were performed on an AMD Ryzen 7 5800H Processor @ 3.20 GHz with 16GB of DDR3

Symmetric

Library 50 Encrypts in (s)
CAS AES-256 00.0068827 (s)
AES C# 00.0079577 (s)
using CasDotnetSdk.Symmetric;

AESWrapper aesWrapper = new AESWrapper();
byte[] nonceKey = aesWrapper.GenerateAESNonce();
byte[] key2 = aesWrapper.Aes256Key();
byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello World");
byte[] encrypted = aesWrapper.Aes256Encrypt(nonceKey, key2, data);

Signatures

  • ED25519
Library 50 Signatures in (s)
CAS ED25519 00.0073306 (s)
NSec Ed25519 00.0241969 (s)
ED25519Wrapper ed25519Wrapper = new ED25519Wrapper();
byte[] keyPair = ed25519Wrapper.GetKeyPairBytes();
Ed25519ByteSignatureResult signature = ed25519Wrapper.SignBytes(keyPair, data);
Library 50 Verifications in (s)
CAS ED25519 00.0091130 (s)
NSec Ed25519 00.0273138 (s)
ED25519Wrapper ed25519Wrapper = new ED25519Wrapper();
byte[] keyPair = ed25519Wrapper.GetKeyPairBytes();
Ed25519ByteSignatureResult signature = ed25519Wrapper.SignBytes(keyPair, data);
bool isValid = ed25519Wrapper.VerifyWithPublicKeyBytes(signature.PublicKey, signature.Signature, data);

Hashers

  • SHA256
Library 50 Hashes in (s)
CAS SHA256 00.0061313 (s)
SHA256 Managed C# 00.0039384 (s)
string toHash = "newShaToHash";
byte[] data = Encoding.UTF8.GetBytes(toHash);
SHAWrapper shaWrapper = new SHAWrapper();
byte[] newSha = shaWrapper.Hash256(data);
  • SHA512
Library 50 Hashes in (s)
CAS SHA512 00.0059154 (s)
SHA512 Managed C# 00.0042587 (s)
string toHash = "newShaToHash";
byte[] data = Encoding.UTF8.GetBytes(toHash);
SHAWrapper shaWrapper = new SHAWrapper();
byte[] newSha = shaWrapper.Hash512(data);
  • HMAC
Library 50 Hashes in (s)
CAS HMAC 00.0060037 (s)
HMAC256 Managed C# 00.0042263 (s)
string toHash = "C#IsASuperDuperLanguage";
string key = "HmacKeyForSigning";
byte[] data = Encoding.UTF8.GetBytes(toHash);
byte[] message = Encoding.UTF8.GetBytes(key);

DateTime start = DateTime.Now;
HmacWrapper hmacWrapper = new HmacWrapper();
byte[] hmacSigned = hmacWrapper.HmacSignBytes(data, message);

Password Hashers

  • Argon2
Method Mean Error StdDev
CASHashArgon2 6.616 ms 0.0587 ms 0.0549 ms
IsopohHashArgon2 365.758 ms 6.9638 ms 6.1732 ms
Argon2Wrappper argon2Wrapper = new Argon2Wrappper();
string password = "DoNotDoThisWithMe!@#";
string hashed = argon2Wrapper.HashPassword(password);
  • SCrypt
Library 50 Password Hashes in (s)
CAS SCrypt 03.5280257 (s)
SCrypt.NET 02.4595297 (s)
SCryptWrapper scrypt = new SCryptWrapper();
string password = "SCryptPasswordHash!@#$";
string hashed = scrypt.HashPassword(password);
  • BCrypt
Library 50 Password Hashes in (s)
CAS BCrypt 11.5030224 (s)
BCrypt.Net-Core 03.3583425 (s)
BcryptWrapper bcrypt = new BcryptWrapper();
string password = "BCryptPasswordHasher!@#$%";
string hashed = bcrypt.HashPassword(password);

Hybrid Encryption

  • AES / RSA

We currently have no other libraries benchmark.

byte[] dataToEncrypt = Encoding.UTF8.GetBytes("What is that? A New Router that I see?");
// Initializer creates our AES key, AES Nonce, and RSA Key Pair for us.
AESRSAHybridInitializer initializer = new AESRSAHybridInitializer(256, 4096);
AESRSAHybridEncryptResult result = this._hybridEncryptionWrapper.EncryptAESRSAHybrid(dataToEncrypt, initializer);
byte[] plaintext = this._hybridEncryptionWrapper.DecryptAESRSAHybrid(initializer.RsaKeyPair.PrivateKey, result);