Example #1
0
        public void EncryptDecrypt_R4096_JSON_Test()
        {
            var key       = RSAEncryptionProvider.CreateKey(RSAKeySizeTypes.R4096, RSAKeyTypes.JSON);
            var signature = RSAEncryptionProvider.Encrypt("image", key.PublicKey, keyType: RSAKeyTypes.JSON);
            var origin    = RSAEncryptionProvider.Decrypt(signature, key.PrivateKey, keyType: RSAKeyTypes.JSON);

            Assert.Equal("image", origin);
        }
Example #2
0
        public void EncryptDecrypt_R1024_XML_Test()
        {
            var key       = RSAEncryptionProvider.CreateKey(RSAKeySizeTypes.R1024);
            var signature = RSAEncryptionProvider.Encrypt("image", key.PublicKey);
            var origin    = RSAEncryptionProvider.Decrypt(signature, key.PrivateKey);

            Assert.Equal("image", origin);
        }
Example #3
0
        /// <summary>
        /// Handles the login procedure for the Server
        /// </summary>
        /// <param name="node"></param>
        /// <param name="connection"></param>
        private void ConnectionEstablished(INode node, IConnection connection)
        {
            log.Info("Connection established. Sending public RSA key.");
            RSAEncryptionProvider rsa = new RSAEncryptionProvider(SecuritySettings.Instance.keySize);

            encryption = rsa;
            connection.Send(new [] {
                Communication.CLIENT_SEND_PUBLIC_KEY,
                rsa.key.ToXmlString(false)
            }, node, new NoneEncryptionProvider());
            connection.BeginReceive();
        }
Example #4
0
        public void EncryptDecrypt_R3072_JSON_Test()
        {
            var key = RSAEncryptionProvider.CreateKey(RSAKeySizeTypes.R3072, RSAKeyTypes.JSON);

#if NET451
            var signature = RSAEncryptionProvider.EncryptByPublicKey("image", key.PublicKey, true, keyType: RSAKeyTypes.JSON);
            var origin    = RSAEncryptionProvider.DecryptByPrivateKey(signature, key.PrivateKey, true, keyType: RSAKeyTypes.JSON);
#else
            var signature = RSAEncryptionProvider.EncryptByPublicKey("image", key.PublicKey, RSAEncryptionPadding.OaepSHA1, keyType: RSAKeyTypes.JSON);
            var origin    = RSAEncryptionProvider.DecryptByPrivateKey(signature, key.PrivateKey, RSAEncryptionPadding.OaepSHA1, keyType: RSAKeyTypes.JSON);
#endif
            Assert.Equal("image", origin);
        }
Example #5
0
        public void EncryptDecrypt_R2048_XML_Test()
        {
            var key = RSAEncryptionProvider.CreateKey();

#if NET451
            var signature = RSAEncryptionProvider.EncryptByPublicKey("image", key.PublicKey, true);
            var origin    = RSAEncryptionProvider.DecryptByPrivateKey(signature, key.PrivateKey, true);
#else
            var signature = RSAEncryptionProvider.EncryptByPublicKey("image", key.PublicKey, RSAEncryptionPadding.OaepSHA1);
            var origin    = RSAEncryptionProvider.DecryptByPrivateKey(signature, key.PrivateKey, RSAEncryptionPadding.OaepSHA1);
#endif
            Assert.Equal("image", origin);
        }
Example #6
0
        public void Test_Encrypt()
        {
            var key         = RSAEncryptionProvider.CreateKey();
            var source      = "装逼打脸2018";
            var cliphertext = RSAEncryptionProvider.Encrypt(source, key.PublickKey, outType: OutType.Hex);
            var plaintext   = RSAEncryptionProvider.Decrypt(cliphertext, key.PrivateKey, outType: OutType.Hex);
            var signData    = RSAEncryptionProvider.SignData(source, key.PrivateKey);
            var verifyData  = RSAEncryptionProvider.VerifyData(source, signData, key.PublickKey);

            Output.WriteLine("密文:\n" + cliphertext);
            Output.WriteLine("明文:\n" + plaintext);
            Output.WriteLine("签名:\n" + signData);
            Output.WriteLine("验签:\n" + verifyData);
        }
Example #7
0
        public void Test_Encrypt_1()
        {
            var privateKey =
                "MIIEpQIBAAKCAQEAwye3PozLsZJTAN/roZo16POjfG2jAY8OSXfzAUsxte7desdq1U+CIkEgx50SXeFMqVdnLTmm/x+1i7162F0Cky2EU3dyb859aUmhG3SdY+DOOQ5TK/0Nfjcof+0E+WPQlghsXK/gficCEqbivrYisBVQ9rDrlvxuE2svKkeAP8iy/CEssxWidm8odlZCxIIlCgbvhuwnD06oQUOEZ6iOZid2kyETmZ3WxlGWnhYW+q9XoXynml1/kZ16DHEJqFESUSWL3OyRSxMV74tAmfy0f9OcBDkT1GTDAkznauE2PM1fl/u98YEwTkRupbhYC5tXF9BQh6wRI4jes3NPe2dWuQIDAQABAoIBAQCilkwMSLDLV+TfLa7aC+guFA14dL8BZXW5r708rrDTqhXLXKic3ojEkQ4GP841eKatzque+hEvK/PMYCggahzjEWDVSQaGL7o8JaObhCQ8OeaVkmGonELJjJqpOYaTX50/4fSlo8GcWFNZxr/Rs1xi5t91JyCfwd7TPtEkoD0w5UgBaoNRlungobKES2w4L6CSNIeeq427N1uxGPhphsZMB6qslzpNnENGofab+jxhby/CqQ/iAVubraltd0lat4lXtyEaMmh0bGUI628uAH5wnWQiUdErEkwmzifBCL+0XA54jMHG1ujvUaVJIf/ATj2YBwgHRDuZgwV4e3n7bCQBAoGBAOJaUKmYGfWm1Edlm3qwkd64Hl3LNG1iViecqbqFGrl7bmWiW5WdN3A+0UF4IFLkZ8kdjqK1Ve3yG21YwVbTbBNrCkEgskkVwfaIqo0OEV9C3cOD9KnuJRcsuucc15tpuYNi+YxcLTztf1rTOJCedoLH8/2fwCvRa4geUsaLoWDpAoGBANy3VTwebGlL7lwa1EkOEbEZlVPw0NX2nWXb+trwn6/YPY354JQ0yHH+V9+HetjGXkgaHNGRVz/d9G25MmLQsHa+fqZdKbpkQW/fIUEP1ytynjO5hAzkK2HmBqlTLIW4ba5snpiRDHWUogW0rsYaS6lCcrw9WOvlO2NIHckB5iVRAoGAYfNDRKCVW0A+TEcj6QvPk9mJCn2Mymjrb2jT6er/jZRkSYbgqvXFr8T/OJ2LH1PHtbgcqTxfWwCR7deikrga5KxFW7mSbR4FOXIam7+itN5yqNDJZ1+unUC2AJzykEZICRsjciHRUbRUkDEnIS3xitaMNwySVGPjbJvypgh2ZUECgYEA017XR62zENvgt2ASMKxCkSH4+dxDgsScU7HpeMa7hsFFobPNOOGbnF+Bc9Xg9bxzCgXH14Ki1c0PigyzjiJg/DbOPzA1CAV/DU3YIOC0pS0tCEf/iADy8txBQOMgXicTEtl+wIkYL3pZ97DjN2BzWPMDwfXWNILg7uFfdOJWryECgYEA0ZNb5fgbNh5tXue/wUPr2LJ1nV/j1gf0vx40+D64Zv08OfpoSTwwnmEejz3GZBdJJ/PLhbghGL+PNug2M8sEHtYuz7CNQahknEcPwch/dToK4jjcjMnuAv+pbpYieZV1I/MvWo5MvgSvk+eWl/WsmeBBGfrDuAbAScJxXLMBoWA=";
            var publicKey =
                "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwye3PozLsZJTAN/roZo16POjfG2jAY8OSXfzAUsxte7desdq1U+CIkEgx50SXeFMqVdnLTmm/x+1i7162F0Cky2EU3dyb859aUmhG3SdY+DOOQ5TK/0Nfjcof+0E+WPQlghsXK/gficCEqbivrYisBVQ9rDrlvxuE2svKkeAP8iy/CEssxWidm8odlZCxIIlCgbvhuwnD06oQUOEZ6iOZid2kyETmZ3WxlGWnhYW+q9XoXynml1/kZ16DHEJqFESUSWL3OyRSxMV74tAmfy0f9OcBDkT1GTDAkznauE2PM1fl/u98YEwTkRupbhYC5tXF9BQh6wRI4jes3NPe2dWuQIDAQAB";
            var source   = "sign_type=RSA2&t=1024";
            var signData =
                "FGGaXIw/BEUflRZOhDuKrBqRiSMx7tbhFEzQPWKyCErghs9KoSTVd9IqpINqAfL+wXZTYaaW+2f+/6z08uMQOG3NY9mPNvUkAEY4DCfrOHN7cVC0UcHByP/VQlJ0YHh/sNLhq+vZRI59wOlhbUxoKFA55uLelky07bK84erqFGGNzDNZnYrSghUXMEE+WPKjjk/r0n0cvnBinWF0SgyXZtnisEt9J1vFDWT6Lku01huNp7VGWwMNlL9dRnEtBiZ5vGfp/pBongosYe/ndWjPW+dRtAnNoo1xf66YYipRfYaQBlJ5lQnFGhC2pkFoko6cloc9b8mZ3Cy0EuCoAdNDCA==";
            var signResult = RSAEncryptionProvider.SignData(source, privateKey, keyType: RSAKeyType.Base64, rsaType: RSAType.RSA2);
            var verifyData = RSAEncryptionProvider.VerifyData(source, signData, publicKey, keyType: RSAKeyType.Base64, rsaType: RSAType.RSA2);

            Output.WriteLine("签名:\n" + signResult);
            Output.WriteLine("验签:\n" + verifyData);
        }
Example #8
0
        public async Task <ActionResult> Post([FromBody] CipheredActivityModel model)
        {
            // The AES key in the model has been encrypted with RSA.
            var privateKey = RSAEncryptionProvider.GetPrivateKeyParameters();

            try {
                // Lets try to decrypt the payload. If we can then everything is good.
                // If we can't this means that someone tampered with the payload.
                var decryptedAESKey = RSAEncryptionProvider.Decrypt(model.k, privateKey);

                var aesKey = JsonConvert.DeserializeObject <AESKeyModel>(decryptedAESKey);

                var payloadString = AESGCMEncryptionProvider.Decrypt(model.m, aesKey.k, aesKey.iv);
                var payload       = JsonConvert.DeserializeObject <List <LearningActivityEventModel> >(payloadString);

                await _learningActivityEventsService.SaveLearningActivityEventAsync(payload);

                return(NoContent());
            }
            catch (Exception ex) { return(BadRequest("Invalid string")); }
        }