PHP实现/** * 登录密码 * 使用时有两种形式的登录密码, * 1. 保存在服务器的登录密码加密后的md5(下称登录密码密文), * 具体算法是用登录密码计算md5得到16字节数据作为aes加密的key和被加密内容, * 得到密文数据计算md5得到16字节数据,16进制编码得到32位字符串,完毕, * 即hex(md5(aes(md5(password), md5(password)))), * 如密码为123456,计算出密码密文为7ba1bd982b33ac731c2c3bca90e77be9 * 2. 不传输不保存只作为加解密key临时使用的只有用户本人知道的登录密码(下称登录密码明文),无法通过服务器保存的的登录密码密文转换得到, * 即md5(password), * 具体算法是用登录密码计算md5得到16字节数据,完毕, */
时间: 2023-11-29 19:04:43 浏览: 181
以下是一个简单的PHP实现,可以根据上述算法生成登录密码密文和登录密码明文:
```php
function generateLoginPassword($password, $isEncrypted) {
if ($isEncrypted) {
// 计算密码密文
$key = md5($password);
$encrypted = openssl_encrypt($key, 'aes-128-ecb', $key, OPENSSL_RAW_DATA);
$encryptedKey = md5($encrypted);
return bin2hex($encryptedKey);
} else {
// 计算密码明文
return md5($password);
}
}
// 示例:生成密码密文
$password = '123456';
$isEncrypted = true;
$loginPassword = generateLoginPassword($password, $isEncrypted);
echo $loginPassword;
// 输出:7ba1bd982b33ac731c2c3bca90e77be9
// 示例:生成密码明文
$password = '123456';
$isEncrypted = false;
$loginPassword = generateLoginPassword($password, $isEncrypted);
echo $loginPassword;
// 输出:e10adc3949ba59abbe56e057f20f883e
```
请注意,上述代码只是一个简单的实现,实际应用中可能需要更加严格的安全措施来保护用户密码。
阅读全文