public static string DESDecrypt(string strinput, string strkey)
{
try
{
byte[] inputArray = Convert.FromBase64String(strinput);
byte[] key = Encoding.UTF8.GetBytes(strkey);
IBufferedCipher cipher = CipherUtilities.GetCipher("DES/ECB/PKCS5Padding");
cipher.Init(false, new KeyParameter(key));
// cipher.Init(false, new ParametersWithIV(new DesParameters(key), key)); 带IV向量的算法可以用到。
byte[] rv = new byte[cipher.GetOutputSize(inputArray.Length)];
int tam = cipher.ProcessBytes(inputArray, 0, inputArray.Length, rv, 0);
cipher.DoFinal(rv, tam);
return Encoding.UTF8.GetString(rv.Remove());
}
catch (Exception ex)
{
return "";
}
}
public static string DESEncrypt(string strinput, string strkey)
{
try
{
byte[] inputArray = Encoding.UTF8.GetBytes(strinput);
byte[] key = Encoding.UTF8.GetBytes(strkey);
IBufferedCipher cipher = CipherUtilities.GetCipher("DES/ECB/PKCS5Padding");
//cipher.Init(true, new ParametersWithIV(new DesParameters(key), key));
cipher.Init(true, new KeyParameter(key));
byte[] rv = new byte[cipher.GetOutputSize(inputArray.Length)];
int tam = cipher.ProcessBytes(inputArray, 0, inputArray.Length, rv, 0);
cipher.DoFinal(rv, tam);
return Convert.ToBase64String(rv.Remove());
}
catch (Exception ex)
{
return "";
}
}
超详细的算法介绍:https://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Cipher
AES/CBC/NoPadding (128)
AES/CBC/PKCS5Padding (128)
AES/ECB/NoPadding (128)
AES/ECB/PKCS5Padding (128)
DES/CBC/NoPadding (56)
DES/CBC/PKCS5Padding (56)
DES/ECB/NoPadding (56)
DES/ECB/PKCS5Padding (56)
DESede/CBC/NoPadding (168)
DESede/CBC/PKCS5Padding (168)
DESede/ECB/NoPadding (168)
DESede/ECB/PKCS5Padding (168)
RSA/ECB/PKCS1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
————————————————