Tag: 密码

可靠地在C#中重现用PHP实现的传统密码散列方法

我们正在将在Linux上运行的PHP应用程序迁移到我们在C#中实现并在Windows上运行的新单点登录(SSO)基础架构。 作为迁移过程的一部分,我们需要我们的C#SSO基础架构能够以与PHP应用程序完全相同的方式散列密码。 虽然PHP应用程序使用了一个相当合理的密码散列算法,但是除了密码和salt之外, 不幸的是,得到散列的字符串还包含salt值的余弦值(解释为整数) ……这是一个相当不寻常的决定。 midly。 不出所料,事实certificate,在PHP和C#中计算大整数的余弦导致结果略有不同。 这意味着我们可能无法在新的SSO基础架构中可靠地重新实现传统密码散列算法。 我们考虑的一个解决方案是在AWS Lambda中运行PHP密码散列函数,并从我们的SSO基础架构中查询Lambda。 你能想到其他选择吗?

是否有.net方法来检查用户密码以简化

我想知道在C#.NET框架中是否有内置方法来检查表示新用户密码的字符串是否过于简单? 例如,“1234”或“qwerty”或“33333”之类的东西太简单了。 PS。 我显然可以自己编码所有这些。 我只是很好奇,如果平台内置了一些可以在我开始之前为我做这件事的东西。

正则表达式在ASP.net中的强密码

我需要检查包含以下4个中的3个的密码: 小写字母 大写字母 数字字符 特殊字符(如%,$,#,…) 密码长度必须在6到20个字符之间。 我目前有这个: public void ChangePassword(string password) { Regex regex1 = new Regex(“^(?=.*[0-9])(?=.*[az])(?=.*[AZ]){6,20}$”); Regex regex2 = new Regex(“^(?=.*[0-9])(?=.*[az])(?=.*?[#?!@$%^&*-]){6,20}$”); Regex regex3 = new Regex(“^(?=.*[0-9])(?=.*[AZ])(?=.*?[#?!@$%^&*-]){6,20}$”); Regex regex4 = new Regex(“^(?=.*[az])(?=.*[AZ])(?=.*?[#?!@$%^&*-]){6,20}$”); Regex regex5 = new Regex(“^(?=.*[0-9])(?=.*[az])(?=.*[AZ])(?=.*?[#?!@$%^&*-]){6,20}$”); Match match1 = regex1.Match(password); Match match2 = regex2.Match(password); Match match3 = regex3.Match(password); Match match4 = regex4.Match(password); Match match5 […]

密码复杂性正则表达式与数字或特殊字符

我有一些正则表达式会检查传入密码的复杂性要求。 然而,它并不足以满足我的需求。 ((?=.*\d)(?=.*[az])(?=.*[AZ]).{8,20}) 它确保密码满足最小长度,包含两种情况的字符并包含一个数字。 但是我需要修改它,以便它可以包含数字和/或允许的特殊字符。 我甚至获得了允许的特殊字符列表。 我有两个问题,分隔特殊字符并使第一个条件执行和/或匹配数字或特殊。 我非常感谢这些部分中的一个正则表达神的建议。 允许的特殊字符是: @%+\/’!#$^?:.(){}[]~-_

C#中的密码恢复工具无法正常工作

嗨(我对此很新), 我创建了一个用户登录的门户网站,在其中,他们可以查看我制作的其他程序。 问题是密码恢复似乎没有工作 – 我没有收到任何错误消息,我只是收到消息“我们无法访问您的信息。请再试一次。” 我正确地配置了ASP.NET配置,并使用不同的用户和权限对此进行了测试,但我只是想知道在配置管理器或web.config中是否需要执行某些操作以便这可以正常工作。 以下是密码恢复工具的代码: Password Recovery   Username: *     谢谢。

关键加强。 我做得对吗?

我正在编写一个哈希密码的类,它通过使用System.Security.Cryptography.Rfc2898DeriveBytes类来生成用于计算哈希值的键来实现密钥拉伸 。 代码基本上是这样做的: // Higher iterations value results in better key strength var db = new Rfc2898DeriveBytes(password + salt + secretKeyFromConfigFile, saltAsBytes, iterations); byte[] hashKey = db.GetBytes(64); // 64 bytes is the recommended size for the HMACSHA512 class var sha512 = new System.Security.Cryptography.HMACSHA512(hashKey); byte[] hashInput = System.Text.Encoding.UTF8.GetBytes(password + salt + secretKeyFromConfigFile); byte[] hash = sha512.ComputeHash(hashInput); […]

如何在查询字符串中安全地包含密码

是否可以在ac#asp.net站点的查询字符串中安全地包含密码。 我知道很少的假设和事情 – 该网站不会也不会与其他网站进行链接/图像/ javascript /分析。 所以没有引用者链接担心。 与Web浏览器的所有通信都将通过https进行。 我知道查询字符串将保留在计算机的历史记录中。 登录时需要的不仅仅是密码/用户名。 因此,简单地将URL粘贴回浏览器将不会导致登录。 我知道该网站可能容易受到跨站点脚本和重放攻击。 我如何减轻这些? 鉴于上述情况,我应该如何在查询字符串中包含密码? 请不要问我’为什么’,我知道这不是一个好主意,但它是客户想要的。

加密和解密密码

我使用以下代码加密和解密asp.net中的密码。 加密工作完美,但解密时抛出此错误Invalid length for a Base-64 char array. 我的密码是123,我使用它如下加密: HttpUtility.UrlEncode(CryptorEngine.Encrypt(strpassword, true)); 并解密我使用它如下: CryptorEngine.Decrypt(HttpUtility.UrlDecode(strpassword), true)); 这是代码: public class CryptorEngine { /// /// Encrypt a string using dual encryption method. Return a encrypted cipher Text /// /// string to be encrypted /// use hashing? send to for extra secirity /// public static string Encrypt(string toEncrypt, bool useHashing) […]

生成一批随机密码

生成随机密码很简单。 但是生成批次更加困难。 public static string getRandomPassword(int letters, int getallen) { //int letters = 8; //int getallen = 5; char[] letterdeel = new char[letters]; int minGetal = (int)Math.Pow(10, getallen – 1); int maxGetal = (int)Math.Pow(10, getallen); string password; Random r = new Random(); int test = (int)(DateTime.Now.Ticks); for (int i = 0; i < letters; i++) […]

如何在数据库表中存储密码

我正在设计一个C#应用程序,我需要将用户的登录信息(包括密码)存储在数据库表中。 我想知道这样做的好方法是什么。 我知道将密码存储为明文是一个可怕的想法。 我在考虑加密密码然后存储它们。 之后,每次用户输入密码时,我都可以加密输入并将加密输入与数据库中已有的输入进行比较。 我的计划是使用一个良好的加密函数…