php将密码存入数据库,可以分内常见的4种方式:
1、直接md5加密存到到数据库
2、md5两次存到数据库
3、对需要加密的字符串和一个常量 进行混淆加密
4、生成一个随机的变量存到数据库中,然后对需要加密的字符串和这个随机变量加密
<php$str="admin"; //需要加密的字符串
$str2="php"; //增加一个常量混淆
$pass1=md5($str);
$pass2=md5(md5($str));
$pass3=md5($str$str2);
echo $pass1"<br>"$pass2"<br>"$pass3;
>
输出:
第四种
$str="admin"; //需要加密的字符串$encrypt=$row['encrypt']; // 生成的 随机加密字符串 存到数据库中
$pass4=md5($str$encrypt);
// 8db2ec7e9636f124e56f7eb4d7b7cc7e
1读取ini文件键值对的类,这样写
class ConfigureFile
{
public string ConfigureFilePath; //INI文件名
//声明读写INI文件的API函数
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public ConfigureFile()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//类的构造函数,传递INI文件名
public ConfigureFile(string ConfigureFilePath)
{
thisConfigureFilePath = ConfigureFilePath;
}
//写INI文件
public void WriteConfigureFileValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, thisConfigureFilePath);
}
//读取INI文件指定
public string ReadConfigureFileValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp, 255, thisConfigureFilePath);
ConsoleWrite(tempToString());
if (tempToString() == null ||tempToString() =="")
{
throw new Exception("Profileini读取配置文件为空");
}
return tempToString();
}
}
2处理读取的键值对这样写
/// <summary>
/// 返回Profileini配置参数
/// </summary>
public class Profile
{
private static ConfigureFile ReadConfigureFile = new ConfigureFile("\\Profileini");
/// <summary>
/// 返回数据库服务名
/// </summary>
/// <returns></returns>
public static string getServerName()
{
//对于你的问题 这个返回值就是nor 在ini文件里就是ServerName=nor
return ReadConfigureFileReadConfigureFileValue("DataBase", "ServerName");
}
/// <summary>
/// 返回登陆账户
/// </summary>
/// <returns></returns>
public static string getLogId()
{
//对于你的问题 返回值就是 sa 在ini里就是LogId=sa
return ReadConfigureFileReadConfigureFileValue("DataBase", "LogId");
}
/// <summary>
/// 返回登陆密码
/// </summary>
/// <returns></returns>
public static string getPassWord()
{
//对于你的问题返回值就是 在ini里就是PassWord=(是加密后的密码 密文形式)
return ReadConfigureFileReadConfigureFileValue("DataBase", "PassWord");
}
}
我把读ini文件 和读取ini文件中的key/value对分开写 这样是为了让你能更灵活的去添加ini中的key/value对 当你添加keyvalue对时 只需要在Profile类中添加相应的get方法就可以了 方便修改
ini文件中的键值对写成这样
[DATABASE]
ServerName='nor'
LogId='sa'
PassWord=''(是密文形式)
3这是加密你密码的类 我用MD5配合加盐值进行加密 这样就很安全
public class MD5Encrypt
{
/// <summary>
/// 将明文用MD5加密
/// </summary>
/// <param name="strPwd">需要加密的明文</param>
/// <param name="strKey">用于加密的Key(加盐值)</param>
/// <returns>加密后得到的MD5值</returns>
public static string ToEncodingByMD5(string strPwd, string strKey)
{
string key = strKeyTrim();
string strEnPwd = stringEmpty;
if (keyLength == 0)
{
key = "lwk";//默认加盐值 你自己定义加盐值,要验证登录密码是否正确 需要传进和保存其加密时 //相同的加盐值 然后对比他们的密文是不是相同
}
byte[] Original = EncodingDefaultGetBytes(strPwd);
byte[] SaltValue = EncodingDefaultGetBytes(key);
byte[] ToKey = new byte[OriginalLength + SaltValueLength];
OriginalCopyTo(ToKey, 0);
SaltValueCopyTo(ToKey, OriginalLength);
MD5 st = MD5Create();
byte[] SaltPWD = stComputeHash(ToKey);
byte[] PWD = new byte[SaltPWDLength + SaltValueLength];
SaltPWDCopyTo(PWD, 0);
SaltValueCopyTo(PWD, SaltPWDLength);
strEnPwd = ConvertToBase64String(PWD);
return strEnPwd;
}
}
以上就是关于前端html源码可以不暴露接口吗为什么全部的内容,包括:前端html源码可以不暴露接口吗为什么、参加安全信息部门面试的技巧、各位用php将密码存入数据库,都用什么方法进行加密的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)