internal virtual CipherPadding CreateCipherPadding() { // TODO: Instantiate an appropriate concrete class. CipherPadding target = null; return(target); }
[Ignore] // placeholder for actual test public void TwofishCipherConstructorTest() { byte[] key = null; // TODO: Initialize to an appropriate value CipherMode mode = null; // TODO: Initialize to an appropriate value CipherPadding padding = null; // TODO: Initialize to an appropriate value TwofishCipher target = new TwofishCipher(key, mode, padding); Assert.Inconclusive("TODO: Implement code to verify target"); }
/// <summary> /// Initializes a new instance of the <see cref="BlockCipher"/> class. /// </summary> /// <param name="key">The key.</param> /// <param name="blockSize">Size of the block.</param> /// <param name="mode">Cipher mode.</param> /// <param name="padding">Cipher padding.</param> /// <exception cref="ArgumentNullException"><paramref name="key"/> is null.</exception> protected BlockCipher(byte[] key, int blockSize, CipherMode mode, CipherPadding padding) : base(key) { this._blockSize = blockSize; this._mode = mode; this._padding = padding; this._mode.Init(this); }
public void PadTest() { CipherPadding target = CreateCipherPadding(); // TODO: Initialize to an appropriate value int blockSize = 0; // TODO: Initialize to an appropriate value byte[] input = null; // TODO: Initialize to an appropriate value byte[] expected = null; // TODO: Initialize to an appropriate value byte[] actual; actual = target.Pad(blockSize, input); Assert.AreEqual(expected, actual); Assert.Inconclusive("Verify the correctness of this test method."); }
/// <summary> /// Initializes a new instance of the <see cref="BlockCipher"/> class. /// </summary> /// <param name="key">The key.</param> /// <param name="blockSize">Size of the block.</param> /// <param name="mode">Cipher mode.</param> /// <param name="padding">Cipher padding.</param> /// <exception cref="ArgumentNullException"><paramref name="key"/> is null.</exception> protected BlockCipher(byte[] key, byte blockSize, CipherMode mode, CipherPadding padding) : base(key) { _blockSize = blockSize; _mode = mode; _padding = padding; if (_mode != null) { _mode.Init(this); } }
static PaddedBufferedBlockCipher MakeCipher(CipherMode cipher, CipherPadding padding) { var engine = new T(); IBlockCipher blockCipher = null; IBlockCipherPadding blockPadding = null; switch (cipher) { case CipherMode.CBC: blockCipher = new CbcBlockCipher(engine); break; } switch (padding) { case CipherPadding.ISO10126d2: blockPadding = new ISO10126d2Padding(); break; case CipherPadding.ISO7816d4: blockPadding = new ISO7816d4Padding(); break; case CipherPadding.PKCS7: blockPadding = new Pkcs7Padding(); break; case CipherPadding.TBC: blockPadding = new TbcPadding(); break; case CipherPadding.X923: blockPadding = new X923Padding(); break; case CipherPadding.ZeroByte: blockPadding = new ZeroBytePadding(); break; } return(new PaddedBufferedBlockCipher(blockCipher, blockPadding)); }
[Ignore] // placeholder for actual test public void EncryptBlockTest() { byte[] key = null; // TODO: Initialize to an appropriate value CipherMode mode = null; // TODO: Initialize to an appropriate value CipherPadding padding = null; // TODO: Initialize to an appropriate value TwofishCipher target = new TwofishCipher(key, mode, padding); // TODO: Initialize to an appropriate value byte[] inputBuffer = null; // TODO: Initialize to an appropriate value int inputOffset = 0; // TODO: Initialize to an appropriate value int inputCount = 0; // TODO: Initialize to an appropriate value byte[] outputBuffer = null; // TODO: Initialize to an appropriate value int outputOffset = 0; // TODO: Initialize to an appropriate value int expected = 0; // TODO: Initialize to an appropriate value int actual; actual = target.EncryptBlock(inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset); Assert.AreEqual(expected, actual); Assert.Inconclusive("Verify the correctness of this test method."); }
public Cipher(CipherMode mode, CipherPadding padding) { cipher = MakeCipher(mode, padding); Mode = mode; Padding = padding; }
/// <summary> /// Rsa解密 /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="isPublicKey">是否公钥</param> /// <param name="base64Key">BASE64编码的公钥</param> /// <returns>返回Rsa解密后的字节码</returns> public static byte[] RsaDecrypt(this byte[] data, bool isPublicKey, string base64Key, CipherMode cipherMode, CipherPadding cipherPadding) { ICipherParameters cipherParameters; if (isPublicKey) { cipherParameters = RSAUtilities.GetKeyParameterFormPrivateKey(base64Key); } else { cipherParameters = RSAUtilities.GetKeyParameterFormPublicKey(base64Key); } return(SecurityExtension.Encrypt(data, CipherAlgorithm.RSA, cipherMode, cipherPadding, cipherParameters)); }
public BlockCipherStub(byte[] key, byte blockSize, CipherMode mode, CipherPadding padding) : base(key, blockSize, mode, padding) { }
/// <summary> /// 加密 /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="cipherAlgorithm">密码算法</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="cipherParameters">加密参数</param> /// <returns>返回加密后的字节码</returns> internal static byte[] Encrypt(byte[] data, CipherAlgorithm cipherAlgorithm, CipherMode cipherMode, CipherPadding cipherPadding, ICipherParameters cipherParameters) { if (data.IsNullOrEmpty()) { return(default);
/// <summary> /// 使用公钥Rsa解密 /// <para> /// 如果PKCS#8格式的公钥则使用 <see cref="RsaEncryptByPublicKey"/> /// </para> /// <para> /// 如果PKCS#1格式的公钥则使用 <see cref="RsaEncryptByAsn1PublicKey"/> /// </para> /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="publicKey">PKCS#1的BASE64编码的公钥(BASE64编码)</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaEncryptByAsn1PublicKey(this byte[] data, string publicKey, CipherMode cipherMode, CipherPadding cipherPadding) { var cipherParameters = RSAUtilities.GetPublicKeyParameterFormAsn1PublicKey(publicKey); return(SecurityExtension.Encrypt(data, CipherAlgorithm.RSA, cipherMode, cipherPadding, cipherParameters)); }
/// <summary> /// 使用私钥Rsa加密 /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="privateKey">BASE64编码的私钥</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaEncryptByPrivateKey(this byte[] data, string privateKey, CipherMode cipherMode, CipherPadding cipherPadding) { return(RsaEncrypt(data, false, privateKey, cipherMode, cipherPadding)); }
/// <summary> /// 使用私钥Rsa解密 /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="privateKey">BASE64编码的私钥</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaDecryptByPrivateKeyFromHex(this string data, string privateKey, CipherMode cipherMode, CipherPadding cipherPadding) { byte[] toEncryptArray = new byte[data.Length / 2]; for (int i = 0; i < data.Length; i += 2) { toEncryptArray[i / 2] = Convert.ToByte(data.Substring(i, 2), 16); } return(RsaDecryptByPrivateKey(toEncryptArray, privateKey, cipherMode, cipherPadding)); }
/// <summary> /// 使用公钥Rsa加密 /// <para> /// 如果PKCS#8格式的公钥则使用 <see cref="RsaEncryptByPublicKey"/> /// </para> /// <para> /// 如果PKCS#1格式的公钥则使用 <see cref="RsaEncryptByAsn1PublicKey"/> /// </para> /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="publicKey">PKCS#8格式的公钥(BASE64编码)</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaEncryptByPublicKey(this byte[] data, string publicKey, CipherMode cipherMode, CipherPadding cipherPadding) { return(RsaEncrypt(data, true, publicKey, cipherMode, cipherPadding)); }
/// <summary> /// 使用公钥Rsa解密 /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="publicKey">PKCS#1的BASE64编码的公钥</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaDecryptByAsn1PublicKeyFromBase64(this string data, string publicKey, CipherMode cipherMode, CipherPadding cipherPadding) { byte[] toEncryptArray = Convert.FromBase64String(data); return(RsaDecryptByAsn1PublicKey(toEncryptArray, publicKey, cipherMode, cipherPadding)); }
/// <summary> /// 使用私钥Rsa解密 /// </summary> /// <param name="data">待解密的字节码</param> /// <param name="privateKey">BASE64编码的私钥</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <returns>返回Rsa加密后的字节码</returns> public static byte[] RsaDecryptByPrivateKeyFromBase64(this string data, string privateKey, CipherMode cipherMode, CipherPadding cipherPadding) { byte[] toEncryptArray = Convert.FromBase64String(data); return(RsaDecrypt(toEncryptArray, false, privateKey, cipherMode, cipherPadding)); }
public AES(CipherMode mode, CipherPadding padding) : base(mode, padding) { }
/// <summary> /// 使用私钥Rsa加密并返回base64编码的字符 /// <para> /// 如果PKCS#1格式的公钥则使用 <see cref="RsaEncryptByAsn1PublicKeyToHex"/> /// </para> /// <para> /// 如果PKCS#8格式的公钥则使用 <see cref="RsaEncryptByPublicKeyToHex"/> /// </para> /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="publicKey">BASE64编码的公钥</param> /// <returns>返回Rsa加密后的十六进制的字符</returns> public static string RsaEncryptByAsn1PublicKeyToHex(this byte[] data, string publicKey, CipherMode cipherMode, CipherPadding cipherPadding) { return(RsaEncryptByAsn1PublicKey(data, publicKey, cipherMode, cipherPadding)?.ToHexString()); }
/// <summary> /// Rsa加密并返回十六进制的字符 /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="isPublicKey">是否公钥</param> /// <param name="base64Key">BASE64编码的公钥</param> /// <returns>返回Rsa加密后的十六进制的字符</returns> public static string RsaEncryptToHex(this string data, bool isPublicKey, string base64Key, CipherMode cipherMode, CipherPadding cipherPadding) { return(RsaEncryptToHex(data?.ToBytes(), isPublicKey, base64Key, cipherMode, cipherPadding)); }
/// <summary> /// Rsa加密并返回十六进制的字符 /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="isPublicKey">是否公钥</param> /// <param name="base64Key">BASE64编码的公钥</param> /// <returns>返回Rsa加密后的十六进制的字符</returns> public static string RsaEncryptToHex(this byte[] data, bool isPublicKey, string base64Key, CipherMode cipherMode, CipherPadding cipherPadding) { return(RsaEncrypt(data, isPublicKey, base64Key, cipherMode, cipherPadding)?.ToHexString()); }
/// <summary> /// 使用私钥Rsa加密并返回base64编码的字符 /// </summary> /// <param name="data">待加密的字节码</param> /// <param name="cipherMode">密码模式</param> /// <param name="cipherPadding">填充方式</param> /// <param name="privateKey">BASE64编码的私钥</param> /// <returns>返回Rsa加密后的base64编码的字符</returns> public static string RsaEncryptByPrivateKeyToBase64(this byte[] data, string privateKey, CipherMode cipherMode, CipherPadding cipherPadding) { return(RsaEncryptByPrivateKey(data, privateKey, cipherMode, cipherPadding)?.ToBase64String()); }