问题标签 [rfc2898]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
481 浏览

c# - 从 C# 加密密钥派生到 Ruby (PBKDF2)

我正在尝试将以下用 C# 编写的密钥生成方法重写为其 Ruby 等效项:

我正在使用PBKDF2实现。这是我的 Ruby 代码:

为了工作,这两种方法应该返回相同的输出。问题是我无法弄清楚如何做到这一点。PBKDF2 实现将盐作为字符串,但 C# 采用字节数组......我认为问题就在那里。

0 投票
2 回答
2388 浏览

java - 用于java的Rfc2898DeriveBytes?

我的后端服务器基于.NET。在服务器上有使用 Rfc2898DeriveBytes 加密

这是.Net的代码

我正在用 JAVA 编写客户端。这是代码

我在 java 中没有得到与 .Net 相同的结果。的加密值12345dAQWIrbtHv/eDbu+4oJD0g==服务器上。

当我得到tcvGLK5r99jt6PFLALpRfQ==

我需要应用什么修复?

0 投票
0 回答
488 浏览

c# - 将 c# Rfc2898DeriveBytes 加密转换为 PHP

PHP中有没有相当于c#Rijndael AES加密/解密的函数?我在下面包含了 c# 代码。请指教。

0 投票
1 回答
2555 浏览

c# - 使用 Rfc2898DeriveBytes 的 AES 256 位加密

我在使用 AES 和 Rfc2898DeriveBytes 时遇到了困惑。这是我找到的代码......

所以,“cipherValue”是一个加密字符串......以及“encryptionKey”。如何使用 AES 和 Rfc2898Derive 字节的其他示例似乎不适合此代码。我见过的其他示例使用纯文本代替上面的“encryptionKey”参数,但这些示例通常演示加密而不是解密。

此代码用于解密我的应用程序配置文件中的密码。加密已经完成,我没有可用资源告诉我它是如何完成的。我假设密码是使用指定的“encryptionKey”和盐值加密的,以及默认的 1000 次迭代和最大大小的密钥和 IV。

我主要对“encryptionKey”参数如何影响事物感到好奇。“cipherValue”是被解密的内容,并给了我正确的输出。这里使用的是什么方法,与我见过的其他示例相比,这有什么优势(如果有的话)?

加密和安全性还不是我的强项……让我知道我是否遗漏了任何可能更清楚地说明这一点的重要内容。提前致谢!

0 投票
1 回答
384 浏览

c# - 使用 Rfc2898DeriveBytes 和 MSSQL 的 C# 中的加密密码问题

我为我的应用程序制作了一个登录系统,但是,它的工作非常不一致。

有时密码会起作用,但有时它会说它不正确。我 100% 确定我输入正确。

为了存储密码,我生成了一个随机盐,用盐对密码进行散列,并将散列后的密码和盐与用户名一起存储在数据库中。

为了对用户进行身份验证,我根据给定的用户名选择散列密码和盐。然后我用盐对他们的密码尝试进行哈希处理,看看它是否与他们的原始哈希密码匹配,如果是,允许他们登录。

我的代码如下:

我的检查同时比较字节数组值和字符串值的原因是,有时字节值比较失败但字符串值有效。

我将用户插入数据库的代码如下

如果有人可以帮助我解决这个问题,我将非常感激。

0 投票
1 回答
156 浏览

pbkdf2 - 将 Asp.net 身份密码哈希复制到 Chilkat

嗨,我想复制在 asp.net 身份中完成的密码散列,这样,由 asp.net 身份散列的密码的结果值和由 Chilkat 散列的密码是相同的。这甚至可能吗?

在 C# asp.net 中,我们使用为我们执行 pbkdf2 的 Rfc2898DeriveBytes。我怎样才能在奇尔卡特做同样的事情?

目前,我在 Chilkat 使用的参数是:

0 投票
1 回答
197 浏览

asp.net - 在nodejs中创建像System.Web.Helpers.Crypto.HashPassword(ASP.NET)这样的方法?

如何在nodejs中使用像https://docs.microsoft.com/en-us/previous-versions/aspnet/web-frameworks/gg538287(v=vs.111)这样的RFC 2898来制作密码哈希?

我的 nodejs 应用程序正在使用一个 SQL 服务器表,其中密码字段由 ASP.NET 的 Crypto.HashPassword 散列,所以我需要在 nodejs 中创建相同的函数来比较它。

0 投票
1 回答
188 浏览

java - 将 .Net 解密转换为 Java

目前我正在开发一个项目,他们使用 AES 加密和 RFC2898 派生字节。这是我提供的解密方法。现在我需要在java中实现它。

这就是我到目前为止所做的:

但我收到如下错误:

未找到密钥长度 java.security.spec.InvalidKeySpecException:未找到密钥长度

0 投票
1 回答
2738 浏览

c# - 如何在 Angular 9 中使用 CryptoJS 来获得与 C# Rfc2898DeriveBytes 相同的加密字符串

我正在尝试使用 CryptoJS 将以下 C# 代码转换为 angular 9,因为当我尝试将 C# 代码转换为 angular 时,它会给出不同的加密字符串。

如何使用 CryptoJS 将使用 Rfc2898DeriveBytes 的 C# 代码转换为 Angular 9?

C#代码:

角 9 代码:

任何人都可以帮助我使用 angular 9 获得与 C# 相同的加密吗?

0 投票
0 回答
234 浏览

asp.net - 为 Rfc2898DeriveBytes 选择盐和密钥大小

我正在升级旧版 asp.net 应用程序中的密码哈希函数。

它使用带有默认 SHA1 的 Rfc2898DeriveBytes。我现在已经将应用程序升级到 .Net 4.7.2,所以我现在可以选择更好的散列算法。

到目前为止,这是我的功能...

不过,我不确定如何选择合适的密钥和盐大小。目前我分别选择了 32 和 64 字节,但这些实际上只是随意选择的。我知道盐的最小大小是 8 个字节,但我真的不知道为什么我会选择更大的盐而不是更小的盐。

还有某种经验法则来决定盐和密钥大小之间的比率吗?

性能并不是真正的考虑因素,因为它的运行频率永远不会足够频繁,不会给服务器带来任何明显的负载。

同样,散列的存储空间也非常无关紧要。散列密码是否需要 88 个字符或 128 个字符,并没有真正的区别。

以前盐和密钥大小都是 32 字节。如果我保持不变,这是否会以某种方式否定更改为 SHA384 的好处,因为我的最终哈希将与以前的大小相同?

根据我对散列算法的基本了解,更大的数字 = 更好的安全性。但是,如果从安全角度来看这样做完全没有意义,我不想选择非常大的密钥大小等。