C#怎么判断是不是Rijndael加密
时间: 2023-07-12 20:12:46 浏览: 215
在C#中,可以通过以下方式判断一个字符串是否是使用Rijndael算法加密的:
1. 判断字符串是否为null或空字符串。
2. 尝试将字符串转换为Base64字符串,如果转换失败则说明字符串不是经过Base64编码的,也就不可能是Rijndael加密的。
3. 将Base64字符串解码为字节数组。
4. 判断字节数组长度是否小于16,如果小于16则说明无法使用Rijndael算法进行解密。
5. 尝试使用Rijndael算法进行解密,如果解密成功则说明字符串是经过Rijndael加密的。
具体实现代码如下:
```csharp
public static bool IsRijndaelEncrypted(string encryptedString, byte[] key, byte[] iv)
{
if(string.IsNullOrEmpty(encryptedString))
{
return false;
}
try
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedString);
if(encryptedBytes.Length < 16)
{
return false;
}
using(RijndaelManaged rijndael = new RijndaelManaged())
{
rijndael.Key = key;
rijndael.IV = iv;
rijndael.Mode = CipherMode.CBC;
rijndael.Padding = PaddingMode.PKCS7;
ICryptoTransform decryptor = rijndael.CreateDecryptor(rijndael.Key, rijndael.IV);
using(MemoryStream ms = new MemoryStream(encryptedBytes))
{
using(CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
byte[] decryptedBytes = new byte[encryptedBytes.Length];
int count = cs.Read(decryptedBytes, 0, decryptedBytes.Length);
string decryptedString = Encoding.UTF8.GetString(decryptedBytes, 0, count);
return true;
}
}
}
}
catch(Exception)
{
return false;
}
}
```
其中,key和iv参数是Rijndael算法的密钥和初始化向量。如果加密时使用的是其他密钥和初始化向量,则需要相应地修改这两个参数。
阅读全文