没有考虑它我只想说我应该允许每个角色.它在任何情况下都会被哈希,我不想限制想要创建强密码的人.
然而,考虑更多,有很多人物,我不知道他们对事物有什么影响.外来字符,ascii符号等等.
我试图谷歌,但我找不到任何人的确切标准.甚至大多数专业组织似乎都不知道.对于许多网站而言,完全不允许使用特殊字符似乎是一种常见做法,这只是愚蠢而不是我想做的事情.
无论如何,对长度,允许的角色等有任何标准建议吗?
我不确定它是否重要,但我将使用ASP.NET w/C#
我的问题来自于 如何使用河豚散列长密码(> 72个字符)
我使用bcrypt(河豚)来哈希密码.所以,正如我从这个问题中发现的那样 https://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximum-password-length
它的字符数限制为72.
所以,我开始考虑限制密码的最大长度,但是在这些问题及其答案之后
所有人都说是反对的.提到的东西,比如
a maximum length specified on a password field should be read as a SECURITY WARNING通过这个答案 - /sf/answers/6980711/所以,我认为我不符合其中一个案例.当然,我同意愚蠢的限制,例如最大长度10,甚至更糟,8或6,但不是30,40或更长的密码(盐渍)被认为是安全的?从这篇文章(虽然有点旧),但它说
it can make only 71,000 guesses against Bcrypt per second
Run Code Online (Sandbox Code Playgroud)
这适用于8个字符的密码.因此,我想象自定义彩虹表会蛮力一个30个或更多字符密码(考虑到每个密码都有自己的盐),因为彩虹表大小呈指数增长
引用同一篇文章的评论
每次在密码中添加一个字符时,都会以指数方式增加通过暴力破解所需的难度.例如,8-char密码的密钥空间为95 ^ 8组合,而20-char密码的密钥空间为95 ^ 20组合.
因此,对于一个20长度密码与bcrypt根据那将是必要95 ^ 20 /(71 000*3600*24*365)~10年28度(如果我做对了)
qsn1:现在,在这种情况下,使用blowfish有一个意思是不要将密码最大长度限制为72,因为在任何情况下都会被截断,因此这里没有额外的安全性增益.
qsn2:即使存在salt(每个用户都是唯一的并保存在db中),毕竟我想在密码中添加pepper(在应用程序中硬编码而不是保存在db中).我知道是否会增加一些额外的安全性,但我认为以防万一db(或db backup)只是泄露,胡椒将是有用的.
https://security.stackexchange.com/a/3289/38200
所以,为了能够添加20个字符胡椒,我需要将密码最大长度设置为50左右.我想这样:让我们说用户是使用70个字符,在大多数情况下(如果不是全部),它将是一些短语或类似的,而不是生成强大的字符,因此将用户限制为50最大长度并添加另一个20-22更安全字符胡椒肯定更安全/随机.另外,让我们说黑客正在使用"常用短语"的彩虹表,我认为有更高的机会,这72 character common phrase将被黑客攻击,而不是50 character common phrase + 22 character …
encryption passwords password-policy password-storage password-encryption
我正在开发一个Java项目,我必须确保用户密码的机密性和完整性保存在纯文本文件中.
为此,我将只在文件中写入密码的哈希值.更具体地说,我的目的是编写密码的哈希值和随机盐,以及随机盐本身,以避免使用彩虹和查找表.我还想使用PBKDF2进行键拉伸,以使计算哈希计算成本高昂.最后,我想使用密钥哈希算法HMAC作为最后一层保护.
我试图在Java代码中实现我的想法,我已经找到了一些上面提到的操作示例:
private static byte[] pbkdf2(char[] password, byte[] salt, int iterations, int bytes)
throws NoSuchAlgorithmException, InvalidKeySpecException
{
PBEKeySpec spec = new PBEKeySpec(password, salt, iterations, bytes * 8);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
return skf.generateSecret(spec).getEncoded();
}
Run Code Online (Sandbox Code Playgroud)
我真的无法理解的是如何输入我的密钥作为HMAC算法使用的密钥,因为它似乎不是函数的输入.我查看了Java文档,但是找不到我的问题的解决方案.
在这一点上,我不确定我是否正确理解加密机制的不同部分是如何工作的,所以我会接受有关该主题的任何帮助.
我一直在考虑开发一个Android应用程序,它可以告诉用户输入的密码的密码强度。
在检查密码强度方面,我开发了这两种算法来检查。但我正在重新考虑使用这些算法,因为我认为它效率不高。你们有什么感想?
这是我的两种算法:
Sample input = Password12@
1. Count the lowercase, uppercase, digits and special characters in the given String.
Eg.
Lowercase count = 7;
Uppercase count = 1;
Digits count = 2;
SpecialCharacter count = 1;
2. Get the character count and multiply it to the size of given String.
Eg.
(Count * Size)
(7 * 10) = 70
(1 * 10) = 10
(2 * 10) = 20
(1 * 10) = 10 …Run Code Online (Sandbox Code Playgroud) 我设置了一个启用了默认密码策略的ApacheDS.对于测试建议我通过输入错误的凭证多次锁定一个简单的User(objectClass =使用某个自定义User-objectClass扩展的Person).正如我所料,用户被锁定(错误消息:用户被永久锁定).
现在的问题是:如何再次解锁用户?有没有更好的方法,然后再删除和添加?
我尝试使用扩展用户(objectClass = pwdPolicy),但在用户被锁定时没有添加pwd*属性.
在更改密码页面中,我们有这个代码,所以如果我们想要将密码策略更改为"StrongPolicy",我们有办法还是默认情况下?
我们还可以将其改为弱政策吗?
我读过MSDN但找不到它.
Membership mu ;
mu=Membership.GetUser(txtUserName.Text);
mu.UnlockUser();
var newPass= mu.ResetPassword();
mu.ChangePassword(newPass,TxtPassword.Text);
Run Code Online (Sandbox Code Playgroud) 我想通过 Keycloak RestAPI 更新/添加密码策略。
我浏览了文档,但看起来我只能通过 API 检索密码策略列表。还有其他可能的方式让我可以通过 Rest API 处理密码策略吗?
https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_serverinforepresentation
https://www.keycloak.org/docs-api/11.0/rest-api/index.html#_passwordpolicytyperepresentation
我正在使用 Keycloak 11。
更新: 我设法找出密码策略值位于领域表下的密码策略列内。我认为我可能需要重新启动 Keycloak,或使用https://www.keycloak.org/docs-api/11.0/rest-上的 Keycloak Rest API (POST /{realm}/clear-realm-cache) 清除 Keycloak 缓存api/index.html使其在更新表后工作。
我正在使用 MySQL 5.7.25,我想通过在 MySQL 命令中执行此操作来增加我的 MySQL 密码策略:
SET GLOBAL validate_password_policy=2;
Run Code Online (Sandbox Code Playgroud)
但我总是收到一个错误:
错误 1193 (HY000):未知系统变量“validate_password_policy”
我试图列出 validate_password 变量:
SHOW VARIABLES LIKE 'validate_password%'
Run Code Online (Sandbox Code Playgroud)
但它总是返回空集
我正在编写安装SQL的安装程序,事先提示用户输入将为其创建的SA用户名/密码.安装SQL时,它会根据Active Directory策略验证此密码,如果不匹配则会失败.
我想要做的是在继续安装SQL之前验证用户输入的密码是否有效.
如何根据Active Directory规则验证密码是否正确?
注意我没有登录来验证这个答案,而只是验证密码.
我目前正在尝试这个,但是我知道不允许写"密码"不会引发异常
try
{
System.DirectoryServices.DirectoryEntry localMachine = new System.DirectoryServices.DirectoryEntry("WinNT://" + Environment.MachineName);
ListPasswordPolicyInfo(Environment.MachineName);
System.DirectoryServices.DirectoryEntry newUser = localMachine.Children.Add("localuser", "user");
newUser.Invoke("SetPassword", new object[] { "3l!teP@$$w0RDz" });
newUser.Invoke("SetPassword", new object[] { "password" });
//newUser.CommitChanges();
//Console.WriteLine(newUser.Guid.ToString());
localMachine.Close();
newUser.Close();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
Run Code Online (Sandbox Code Playgroud)