假设我有一个字符串形式的密码:
$password = "thisisaplaintextpassword"
如何将其转换为以下内容?
$password = "************************"
我想通过电子邮件向用户发送他们的帐户详细信息,并且不想发送整个内容。
答案 0 :(得分:25)
$password = str_repeat("*", strlen($password));
答案 1 :(得分:6)
您不应该向用户显示长度,因为这是泄漏应该是安全的信息。
在你的问题下面的评论中使用的习惯用法是在问“你为什么要这样做?”更多的建议是“不要那样做”,但是苏格拉底的方法应该鼓励你思考为什么要问这个问题。你应该得出的结论是“你不应该问那个具体的问题,因为这个问题的基础是有缺陷的”。只需使用静态字符串。这是一个比实际告诉你如何在特定情况下做错事的更好的建议。
其次:向用户显示一系列反映密码长度的星号,这表示您将密码以明文形式存储或仅加密,以便您可以将其恢复为原始形式确定长度。这背叛了你的进一步缺乏安全性。除非有充分的理由不这样做,否则只应存储密码的哈希值。哈希是一个统一的长度,这使你的问题变得多余。
所以你 - 很简单 - 不应该这样做。 那是你问的问题底线的答案。
然而,为了完整起见,我将在其他回复中重复你已经回答的问题:
function stringToAsterisks($string){
return str_repeat("*", strlen($string));
}
答案 2 :(得分:0)
$password = "thisisaplaintextpassword"
echo str_repeat("*",strlen($password));
示例输入
testingpass
示例输出
***********
示例输入
hello
示例输出
*****
答案 3 :(得分:0)
function hidePassword($p) {
$fit = strlen($p);
return sprintf("%'*-${fit}s",false);
}
echo hidePassword($p);