C# 安卓ANSIX923密码填充
我正在尝试制作一个连接到数据库的android应用程序,有不同的用户,他们都有加密的密码。我创建了一个用于连接数据库的C#应用程序,它还使用以下算法创建这些密码:C# 安卓ANSIX923密码填充,c#,android,C#,Android,我正在尝试制作一个连接到数据库的android应用程序,有不同的用户,他们都有加密的密码。我创建了一个用于连接数据库的C#应用程序,它还使用以下算法创建这些密码: String PKey = "key"; int intLenght = textBox1.Text.Length - 1; string NewString = null; NewString = textBox1.Text; byte[] key
String PKey = "key";
int intLenght = textBox1.Text.Length - 1;
string NewString = null;
NewString = textBox1.Text;
byte[] keyArray;
byte[] ToEncryptArray = UTF8Encoding.UTF8.GetBytes(NewString);
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(PKey));
hashmd5.Clear();
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.EBC;
tdes.Padding = PaddingMode.ANSIX923;
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(ToEncryptArray, 0, ToEncryptArray.Length);
tdes.Clear();
string res = System.Convert.ToBase64String(resultArray, 0, resultArray.Length);
textBox2.Text = res;
我已经在android中复制了这一点,如下所示:
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest(PKey.getBytes("UTF-8")); // <-- note encoding
byte[] toEncryptByte = encString.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("DESEDE/EBC/X9.23PADDING");
SecretKeySpec myKey = new SecretKeySpec(hash,"DESede");
cipher.init(Cipher.ENCRYPT_MODE, myKey);
byte[] encryptedPlainText = cipher.doFinal(toEncryptByte);
String encrypted = Base64.encodeToString(encryptedPlainText, 0);
return encrypted;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e){
e.printStackTrace();
} catch (InvalidKeyException e){
e.printStackTrace();
} catch (IllegalBlockSizeException e){
e.printStackTrace();
} catch (BadPaddingException e){
e.printStackTrace();
}
return null;
}
我试图避免更改C#中的填充模式或密码模式,因为我必须替换所有密码
作为测试,我尝试了PKCS7填充,这两种填充都有效
android是否存在EBC ANSIX923填充
谢谢 不要加密密码,当攻击者获得DB时,他也将获得加密密钥。用随机盐在HMAC上迭代大约100毫秒,并用散列保存盐。使用诸如
password\u hash
/password\u verify
、PBKDF2
(又称Rfc2898DeriveBytes
)、Bcrypt
等函数和类似函数。关键是让攻击者花费大量时间通过暴力手段查找密码。加密密码。2.3DES。3.欧洲央行模式。4.ANSIX923填充。用户的安全性非常重要,需要当前的最佳实践。先生,请告诉我们最佳做法好吗?
No provider found for DESEDE/EBC/X9.23PADDING