相关疑难解决方法(0)

ASP.NET会员盐?

ASP.NET成员如何生成其salt密钥,然后如何对其进行编码(即,是salt +密码还是密码+ salt)?

我正在使用SHA-1和我的会员资格,但我想重新创建相同的盐,所以内置的会员资格可以像我的东西一样散列东西.

编辑2:没关系.我误读了它并且认为它说的是字节,而不是位.所以我传入128个字节,而不是128位.

编辑:我一直试图这样做.这就是我的意思,

public string EncodePassword(string password, string salt)
{
    byte[] bytes = Encoding.Unicode.GetBytes(password);
    byte[] src = Encoding.Unicode.GetBytes(salt);
    byte[] dst = new byte[src.Length + bytes.Length];

    Buffer.BlockCopy(src, 0, dst, 0, src.Length);
    Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);

    HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");

    byte[] inArray = algorithm.ComputeHash(dst);

    return Convert.ToBase64String(inArray);
}

private byte[] createSalt(byte[] saltSize)
{
    byte[] saltBytes = saltSize;

    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    rng.GetNonZeroBytes(saltBytes);

    return saltBytes;
}
Run Code Online (Sandbox Code Playgroud)

所以我没有试过看看ASP.NET成员资格是否会识别这个,但散列密码看起来很接近.我只是不知道如何将它转换为base64 for salt.

我这样做了

byte[] storeSalt = createSalt(new byte[128]); …
Run Code Online (Sandbox Code Playgroud)

asp.net security hash asp.net-membership

22
推荐指数
2
解决办法
2万
查看次数

在纯T-SQL中生成ASP.Net Membership密码哈希

我试图创建在ASP.Net成员资格系统默认的SHA-1密码哈希的纯T-SQL表示.理想情况下,我会得到的是:

UserName           Password              GeneratedPassword
cbehrens           34098kw4D+FKJ==       34098kw4D+FKJ==
Run Code Online (Sandbox Code Playgroud)

注意:那里有伪造的base-64文本.我有base64_encode和解码函数正确往返.这是我的尝试,但不起作用:

SELECT UserName, Password, dbo.base64_encode(HASHBYTES('SHA1', dbo.base64_decode(PasswordSalt) +  'test')) As TestPassword FROM aspnet_Users U JOIN aspnet_membership M ON U.UserID = M.UserID
Run Code Online (Sandbox Code Playgroud)

我尝试了很多关于主题的变化,但没有用.我需要在纯T-Sql中执行此操作; 涉及控制台应用程序或类似的东西将使工作翻倍.

因此,如果有人能提供从ASP.Net会员资料中复制该密码的语法应该是什么,我将非常感激.

t-sql asp.net hash asp.net-membership sql-server-2008

10
推荐指数
2
解决办法
1万
查看次数

在Ruby中重新实现ASP.NET成员资格和用户密码哈希

我有一个庞大的用户数据库(~200,000),我正在从ASP.NET应用程序转移到Ruby on Rails应用程序.我真的不想要求每个用户重置密码,所以我试图在Ruby中重新实现C#密码散列函数.

旧功能是这样的:

public string EncodePassword(string pass, string saltBase64)
 {
     byte[] bytes = Encoding.Unicode.GetBytes(pass);
     byte[] src = Convert.FromBase64String(saltBase64);
     byte[] dst = new byte[src.Length + bytes.Length];
     Buffer.BlockCopy(src, 0, dst, 0, src.Length);
     Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
     HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
     byte[] inArray = algorithm.ComputeHash(dst);
     return Convert.ToBase64String(inArray);
 }
Run Code Online (Sandbox Code Playgroud)

示例哈希密码和盐是(并且使用的密码是"密码"):

哈希密码:"weEWx4rhyPtd3kec7usysxf7kpk ="盐:"1ptFxHq7ALe7yXIQDdzQ9Q =="密码:"密码"

现在使用以下Ruby代码:

require "base64"
require "digest/sha1"


password = "password"
salt = "1ptFxHq7ALe7yXIQDdzQ9Q=="

concat = salt+password

sha1 = Digest::SHA1.digest(concat)

encoded = Base64.encode64(sha1)

puts encoded
Run Code Online (Sandbox Code Playgroud)

我没有得到正确的密码哈希(我得到"+ BsdIOBN/Vh2U7qWG4e + O13h3iQ ="而不是"weEWx4rhyPtd3kec7usysxf7kpk =").任何人都可以看到问题可能是什么?

非常感谢 …

ruby asp.net base64 sha1 ruby-on-rails

8
推荐指数
1
解决办法
5976
查看次数

ASP.NET成员提供程序的不同哈希算法?

有谁知道是否可以将ASP.NET成员资格API配置为使用SHA-256或SHA-512?我真的不想写下自己的写作,我们的雇主有一个不允许MD5或SHA-1的加密策略.我可以从Microsoft找到的是HashAlgorythmType枚举

...但是这只包含MD5和SHA1

谢谢,

基诺

asp.net-membership

8
推荐指数
1
解决办法
5623
查看次数

如何在node.js中检查ASP.NET密码哈希

首先,我使用SHA256和.NET/Node.js读取了这个Hashing密码,它对我没有帮助.

我必须验证在node.js环境中在ASP.NET中创建的密码哈希.我被告知使用此算法生成密码:ASP.NET成员资格使用的默认哈希算法是什么?.

我有示例密码哈希和盐(第一行是密码,第二行是盐):

"Password": "jj/rf7OxXM263rPgvLan4M6Is7o=",
"PasswordSalt": "/Eju9rmaJp03e3+z1v5s+A==",
Run Code Online (Sandbox Code Playgroud)

我知道哈希算法是SHA1,我知道上面的哈希是为输入生成的test123.但是我不能重现散列算法来为此输入获取相同的散列.我尝试了什么:

Password = "jj/rf7OxXM263rPgvLan4M6Is7o="
PasswordSalt = "/Eju9rmaJp03e3+z1v5s+A=="
crypto = require("crypto")
sha1 = crypto.createHash("sha1")
PasswordSalt = new Buffer(PasswordSalt, 'base64').toString('utf8')
sha1.update(PasswordSalt+"test123", "utf8")
result = sha1.digest("base64")
console.log(Password)
console.log(result)
Run Code Online (Sandbox Code Playgroud)

结果是:

jj/rf7OxXM263rPgvLan4M6Is7o=
xIjxRod4+HVYzlHZ9xomGGGY6d8=
Run Code Online (Sandbox Code Playgroud)

我能够得到C#算法:

using System.IO;
using System;
using System.Text;
using System.Security.Cryptography;

class Program
{

    static string EncodePassword(string pass, string salt)
    {
        byte[] bytes = Encoding.Unicode.GetBytes(pass);
        byte[] src = Convert.FromBase64String(salt);
        byte[] dst = new byte[src.Length + bytes.Length];
        Buffer.BlockCopy(src, …
Run Code Online (Sandbox Code Playgroud)

asp.net algorithm hash node.js

6
推荐指数
2
解决办法
1767
查看次数

使用PHP对ASP.NET成员身份的用户进行身份验证

尝试使用PHP针对现有ASP.NET成员资格数据库对用户进行身份验证时遇到一些问题。我搜索了网络,发现的现有答案似乎不适用于我。即:

public static function Hash($password, $salt)
{
  $decodedSalt = base64_decode($salt);
  $utf = mb_convert_encoding($password, 'UTF-16LE', 'UTF-8');
  return base64_encode(sha1($decodedSalt.$utf, true));
}
Run Code Online (Sandbox Code Playgroud)

我认为问题的部分原因在于密码散列实际上不是使用SHA-1计算的,因为数据库中的值是44个字符长,base64编码的字符串(这意味着输入可能是256位长)。我尝试使用SHA-256代替SHA-1,但无济于事。我在web.config中找不到会进一步加重哈希值的机器密钥,并且当我在本地或在生产服务器上运行时,ASP.NET站点会生成相同的哈希值,因此我不知道为什么它们没有不匹配。

Web.config成员资格提供程序:

<add connectionStringName="MySqlMembershipConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true" name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, mysql.web" />
Run Code Online (Sandbox Code Playgroud)

例如密码工作:

$salt = 'Mu1tp8XzfKl8dSTVAZm44A=='; // Straight from the DB
$password = 'testing';
$expectedHash = 'TQN7m8OWIyBOKVwzegWSUBVq7o7+KWFBc46J+B77mLw=' // Straight from the DB

// When using the above Hash function with SHA-256 instead of SHA-1
$generatedHash = 'rpmTmtBfWoJz71ooQGQUIIyQJKd99qhYxMUI1yda0qE='
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?知道为什么我的哈希值与数据库中存储的哈希值不匹配(以及为什么/如何在通过ASP.NET网站登录时起作用)吗?我尝试换出哈希函数,反转密码/盐的串联,并在打我的计算机时大声喊叫,但这些似乎都没有帮助。

php c# asp.net .net-4.0

4
推荐指数
1
解决办法
1660
查看次数

MVC4使用什么加密?

我们如何找出MVC4使用的加密方式?我注意到有一个SALT选项,但这似乎也没有在WebSecurity()模块中使用.

我想知道使用的标准,以及是否可以轻松升级到最新的SHA

c# asp.net-membership asp.net-mvc-4 simplemembership

3
推荐指数
1
解决办法
3020
查看次数

将 .Net 4.5.1 中的 KeyDerivation.Pbkdf2 转换为 .Net 4.0

我有两个使用.net 4.0和.net 4.6.1的项目,KeyDerivation仅在.net 4.5.1之后可用。如何使用其他哈希库(例如 Rfc2898DeriveBytes/ Crypto)在 .Net 4.0 中获得相同的哈希结果

byte[] salt = new byte[128 / 8];
var hashedPassword = Convert.ToBase64String(KeyDerivation.Pbkdf2(
    password: "GN(o@D30",
    salt: salt,
    prf: KeyDerivationPrf.HMACSHA512,
    iterationCount: 100000,
    numBytesRequested: 256 / 8)
);
Run Code Online (Sandbox Code Playgroud)

.net c# hash

2
推荐指数
1
解决办法
2020
查看次数