Ejemplo n.º 1
0
        private byte[] DecryptInternal(byte[] bytesToDecrypt, bool asOaep)
        {
            if (bytesToDecrypt == null)
            {
                throw new System.ArgumentNullException(nameof(bytesToDecrypt));
            }

            if (bytesToDecrypt.Length > this.KeySize / 8)
            {
                throw new System.Security.Cryptography.CryptographicException(
                          $"Padding: data too big - key size in bytes: \"{System.Convert.ToString(this.KeySize / 8)}\".");
            }

            Org.BouncyCastle.Crypto.IAsymmetricBlockCipher decryptionEngine = null;

            if (asOaep)
            {
                //Org.BouncyCastle.Crypto.Encodings.OaepEncoding decryptionEngine =
                decryptionEngine = new Org.BouncyCastle.Crypto.Encodings.OaepEncoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());
            }
            else
            {
                // Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding decryptionEngine =
                decryptionEngine = new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());
            }

            decryptionEngine.Init(false, m_keyParameter);
            return(decryptionEngine.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length));
        } // End Function DecryptInternal
Ejemplo n.º 2
0
        public override byte[] EncryptValue(byte[] bytesToEncrypt)
        {
            Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding encryptEngine =
                new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            encryptEngine.Init(true, m_keyParameter);

            // string encrypted = System.Convert.ToBase64String(
            return(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));
            // );
        }
Ejemplo n.º 3
0
        public override byte[] DecryptValue(byte[] bytesToDecrypt)
        {
            Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding decryptEngine =
                new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            decryptEngine.Init(false, m_keyPair.Private);

            // string decrypted = System.Text.Encoding.UTF8.GetString(
            return(decryptEngine.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length));
            //);
        }
Ejemplo n.º 4
0
        public override byte[] Encrypt(byte[] data, RSAEncryptionPadding padding)
        {
            Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding encryptEngine =
                new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            encryptEngine.Init(true, m_keyParameter);

            // string encrypted = System.Convert.ToBase64String(
            return(encryptEngine.ProcessBlock(data, 0, data.Length));
            // );
        }
Ejemplo n.º 5
0
        public override byte[] Decrypt(byte[] data, RSAEncryptionPadding padding)
        {
            Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding decryptEngine =
                new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            decryptEngine.Init(false, m_keyPair.Private);

            // string decrypted = System.Text.Encoding.UTF8.GetString(
            return(decryptEngine.ProcessBlock(data, 0, data.Length));
            //);
        }
Ejemplo n.º 6
0
        public static string EncryptRSA(string unencrypted, string pubKey)
        {
            var bytesToEncrypt = Encoding.UTF8.GetBytes(unencrypted);
            var encryptEngine  = new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            using (var txtreader = new StringReader(pubKey))
            {
                var keyParameter = (AsymmetricKeyParameter) new PemReader(txtreader).ReadObject();
                encryptEngine.Init(true, keyParameter);
            }
            var encrypted = Convert.ToBase64String(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));

            return(encrypted);
        }
Ejemplo n.º 7
0
        public static string RsaEncryptWithPrivate(string clearText, string privateKey)
        {
            var bytesToEncrypt = Encoding.UTF8.GetBytes(clearText);
            var encryptEngine  = new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            using (var txtreader = new StringReader(privateKey))
            {
                var keyPair = (AsymmetricCipherKeyPair) new Org.BouncyCastle.OpenSsl.PemReader(txtreader).ReadObject();
                encryptEngine.Init(true, keyPair.Public);
            }

            var encrypted = Convert.ToBase64String(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));

            return(encrypted);
        }
Ejemplo n.º 8
0
        public static string DecryptRSA(string encrypted, string privKey)
        {
            var bytesToDecrypt = Convert.FromBase64String(encrypted);
            AsymmetricCipherKeyPair keyPair;
            var decryptEngine = new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new RsaEngine());

            byte[] result;
            using (var txtreader = new StringReader(privKey))
            {
                keyPair = (AsymmetricCipherKeyPair) new PemReader(txtreader).ReadObject();
                decryptEngine.Init(false, keyPair.Private);
                result = decryptEngine.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length);
            }
            var decrypted = Encoding.UTF8.GetString(result, 0, result.Length);

            return(decrypted);
        }
Ejemplo n.º 9
0
        public string RsaDecryptWithPublic(string base64Input, string publicKey)
        {
            byte[] bytesToDecrypt = System.Convert.FromBase64String(base64Input);
            Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding decryptEngine =
                new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            using (System.IO.StringReader txtreader = new System.IO.StringReader(publicKey))
            {
                Org.BouncyCastle.Crypto.AsymmetricKeyParameter keyParameter =
                    (Org.BouncyCastle.Crypto.AsymmetricKeyParameter) new Org.BouncyCastle.OpenSsl.PemReader(txtreader).ReadObject();

                decryptEngine.Init(false, keyParameter);
            }

            string decrypted = System.Text.Encoding.UTF8.GetString(decryptEngine.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length));

            return(decrypted);
        }
Ejemplo n.º 10
0
        public string RsaEncryptWithPublic(string clearText, string publicKey)
        {
            byte[] bytesToEncrypt = System.Text.Encoding.UTF8.GetBytes(clearText);
            Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding encryptEngine =
                new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());

            using (System.IO.StringReader txtreader = new System.IO.StringReader(publicKey))
            {
                Org.BouncyCastle.Crypto.AsymmetricKeyParameter keyParameter =
                    (Org.BouncyCastle.Crypto.AsymmetricKeyParameter) new Org.BouncyCastle.OpenSsl.PemReader(txtreader).ReadObject();

                encryptEngine.Init(true, keyParameter);
            }

            string encrypted = System.Convert.ToBase64String(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));

            return(encrypted);
        }
Ejemplo n.º 11
0
        private byte[] EncryptInternal(byte[] bytesToEncrypt, bool asOaep)
        {
            if (bytesToEncrypt == null)
            {
                throw new System.ArgumentNullException(nameof(bytesToEncrypt));
            }

            Org.BouncyCastle.Crypto.IAsymmetricBlockCipher encryptEngine = null;

            if (asOaep)
            {
                //Org.BouncyCastle.Crypto.Encodings.OaepEncoding encryptEngine =
                encryptEngine = new Org.BouncyCastle.Crypto.Encodings.OaepEncoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());
            }
            else
            {
                // Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding encryptEngine =
                encryptEngine = new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine());
            }

            encryptEngine.Init(true, this.m_keyParameter);
            return(encryptEngine.ProcessBlock(bytesToEncrypt, 0, bytesToEncrypt.Length));
        } // End Function EncryptInternal
Ejemplo n.º 12
0
        public EncryptHelper()
        {
            enc = new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(eng);
            try
            {
                publicKey  = PublicKeyFactory.CreateKey(Convert.FromBase64String(Setting.Instance.PublicKey));
                privateKey = PrivateKeyFactory.CreateKey(Convert.FromBase64String(Setting.Instance.PrivateKey));
            }
            catch (Exception ex)
            {
                LogHelper.Log("加载密钥失败", ex);
            }
            var c = Encoding.UTF8.GetBytes("阳历fasefasfasefasv");
            //var a = "RPWC2H7CDtHxSfUAtQMRBj66fS0+/dNtyqhph9hvilWgXdCgRVrQgzkAquH3Brw59a9qDW30Bpq9wjLtk1NclnhxSDh7/pXE0e/1eOVm/zUM0eWD4DHVI5q6AsJkf7APUCmV+T2VCimsaEogh9LOX1wZ097oPSOHYIRH5C/M7pCceiQws0MOucc1FTOy8HrXF0jvozi4KZXkpEyQXJkXJSchrLyebhAlJPgvfd0eybT4CWIBNSkNbYrgnG6D0CRJ9oqG5rEqDjengdfiOkGVOfrzKg2Uxsi5G+VggWy6BIs2IWVg4tEe9huBsBtZoomZa0cK192ADd0dGipvE6BndQ==";

            var en = RSAProcess(c, true, true);
            var b  = RSAProcess(en, false, false);

            var str = Convert.ToBase64String(en);
            var de  = RSAProcess(en, false, false);

            str = Encoding.UTF8.GetString(de, 0, de.Length);
        }
Ejemplo n.º 13
0
        private bool VerifyHashInternal(
            byte[] hash
            , byte[] signature
            , Org.BouncyCastle.Crypto.IDigest digest
            , bool asOaep)
        {
            Org.BouncyCastle.Crypto.IAsymmetricBlockCipher rsaEngine = null;

            if (asOaep) // PSS:
            {
                rsaEngine =
                    new Org.BouncyCastle.Crypto.Encodings.OaepEncoding(
                        new Org.BouncyCastle.Crypto.Engines.RsaBlindedEngine()
                        );
            }
            else // Pkcs1
            {
                rsaEngine =
                    new Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding(
                        new Org.BouncyCastle.Crypto.Engines.RsaBlindedEngine()
                        );
            }
            rsaEngine.Init(false, this.m_keyPair.Public);
            byte[] a = null;
            byte[] b = null;

            try
            {
                a = rsaEngine.ProcessBlock(signature, 0, signature.Length);
                b = this.DerEncode(hash, digest);
            }
            catch
            {
                return(false);
            }

            if (a.Length == b.Length)
            {
                return(Org.BouncyCastle.Utilities.Arrays.ConstantTimeAreEqual(a, b));
            }
            if (a.Length != b.Length - 2)
            {
                return(false);
            }

            int num1 = a.Length - hash.Length - 2;
            int num2 = b.Length - hash.Length - 2;

            b[1] -= (byte)2;
            b[3] -= (byte)2;

            int num3 = 0;

            for (int index = 0; index < hash.Length; ++index)
            {
                num3 |= (int)a[num1 + index] ^ (int)b[num2 + index];
            }

            for (int index = 0; index < num1; ++index)
            {
                num3 |= (int)a[index] ^ (int)b[index];
            }

            return(num3 == 0);
        } // End Function VerifyHashInternal