首页 > 编程知识 正文

加密算法E是解密算法的逆运算,最新加密算法

时间:2023-05-06 20:30:25 阅读:211545 作者:4680

//简单加密,所有字符对应唯一加密字符,在穷举法面前不堪一击。使用随机且足够长的秘钥能提高安全系数public string str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";//任意一串字符串,不要有重复的字符public string str2 = "";//初始化加密器public void InitKey(string key){List<char> tempStr = new List<char>();for(int i=0;i<key.length;i++){if(!tempStr.Contains(key[i])tempStr.add(key[i]);}for(int j=0;j<str1.length;j++){if(!tempStr.Contains(str1[j])tempStr.add(str1[j]);}string str2 = tempStr.ToString();}//加密public string GetEncryptedStr(string ClearStr){string encryptedStr = "";for(int i=0;k<ClearStr.length;i++){if(str1.Contains(ClearStr[i]))encryptedStr+=str2[str1.IndexOf(ClearStr[i])];elseencryptedStr+=ClearStr[i];}return encryptedStr;}//解密public string GetClearStr(string EncryptedStr){string clearStr="";for(int i=0;i<EncryptedStr.length;i++){if(str2.Contains(EncryptedStr[i]))clearStr+=str1[str2.IndexOf(EncryptedStr[i])];elseclearStr+=EncryptedStr[i];}return clearStr;}//hxdbl不可逆加密多用于密码验证public static string HashEncoding(string Security){ byte[] Value; UTF8Encoding Code = new UTF8Encoding(); byte[] Message = Code.GetBytes(Security); //这里当然有多种长度可以选择,不一定非要256位哈 SHA256Managed Arithmetic = new SHA256Managed(); Value = Arithmetic.ComputeHash(Message); Security = ""; foreach (byte o in Value) { Security += o.ToString("x2"); } return Security;}

当然了,这里的hxdbl是没有加盐的
若要加盐,要么对每个用户随机生成盐值,就是一段字符串。并且要明文保存起来,在验证的时候拿来用;要么选择现有的(数据库中某地方已经保存的)字符串(条件:不会被修改,较长(这个可以处理))作为盐值,拼到密码里面再加密。这样的好处是就算有部分人密码一样(对付那些懒得改初始密码或喜欢用简单密码的人),他们的密码在hxdbl后也是不同的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。