假设我有一个字符串密码:
$password = "thisisaplaintextpassword"
我该如何将它转换为以下内容?
$password = "************************"
我希望能够通过电子邮件向用户发送他们的账户详情,但不想发送全部内容。
假设我有一个字符串密码:
$password = "thisisaplaintextpassword"
我该如何将它转换为以下内容?
$password = "************************"
我希望能够通过电子邮件向用户发送他们的账户详情,但不想发送全部内容。
您不应该向用户展示密码长度,因为这会泄露应该是安全的信息。
在下面的评论中,使用的是“苏格拉底方法”,通过问“你为什么想这样做?”来给出建议“不要这样做”,但是苏格拉底方法旨在鼓励您思考问题被提出的原因。您应该得出的结论是“您不应该问那个具体的问题,因为提出该问题的基础是有缺陷的”。只需使用静态字符串即可。这比实际告诉您如何在特定情况下执行错误操作更好。
其次,向用户显示反映其密码长度的星号序列,有点暗示您要么以明文形式存储其密码,要么只加密了它,以便您可以将其还原为原始格式以确定其长度。这表明您进一步缺乏安全性。除非有非常好的理由,否则只应存储密码的哈希值。哈希值具有统一的长度,因此您的问题就变得多余了。
所以,简单地说,您不应该这样做。那就是您正在提出的问题的答案。
但是,为了完整起见,我将重复您已经在其他回答中得到的答案:
function stringToAsterisks($string){
return str_repeat("*", strlen($string));
}
function hidePassword($p) {
$fit = strlen($p);
return sprintf("%'*-${fit}s",false);
}
echo hidePassword($p);
$password = "thisisaplaintextpassword"
echo str_repeat("*",strlen($password));
样例输入
testingpass
样例输出
***********
示例输入
hello
*****