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)
————————————————
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)