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
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)); // ); }
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)); //); }
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)); // ); }
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)); //); }
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); }
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); }
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); }
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); }
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); }
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
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); }
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