static void Main(string[] args) { // setup var rng = new RNGCryptoServiceProvider(); var sslProtect = new OpenSSLProtectData(rng); var sshProtect = new SSHProtectData(rng, sslProtect); // generate SSH keypair var keyPair = OpenSSHKeygen.GenerateKeyPair(); // generate single 32 byte key for aes var symmetricKey = new byte[32]; rng.GetNonZeroBytes(symmetricKey); // some random json string var plainText = "{\"id\":\"some_id\",\"debugging\":false,\"redis\":{\"host\":\"localhost\",\"port\":6379,\"password\":\"passy\",\"db\":0,\"channelPrefix\":null},\"http\":{\"port\":8080},\"ws\":{\"keepalive\":true,\"keepaliveInterval\":30000},\"clientId\":\"some_id\",\"clientSecret\":\"some_secret\"}"; // flip this to use the same symmetricKey (generated above) // or generate a new symmetric key every time // when the same key is used there doesn't seem to be any problems bool useSameKey = false; // loop multiple encryptions and count failures var failures = 0; for (var i = 0; i < 50; i++) { if (!EncryptDecrypt(sshProtect, keyPair, plainText, useSameKey ? symmetricKey : null)) { failures++; } } Console.WriteLine($"Total Failures: {failures}"); }
public SSHProtectData(Encoding encoding, RNGCryptoServiceProvider rngCrypto, OpenSSLProtectData encryption) { m_Encoding = encoding; m_RngCrypto = rngCrypto; m_Encryption = encryption; }
public SSHProtectData(RNGCryptoServiceProvider rngCrypto, OpenSSLProtectData encryption) : this(DEFAULT_ENCODING, rngCrypto, encryption) { }