问题标签 [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.
asp-classic - 如何使用 AES 在 VBScript 中加密?
我希望使用特定密钥和IV值在VBScript中使用Rijndael/AES加密一些数据。有什么好的函数库或 COM 组件可以很好用吗?
我看了看CAPICOM;它只允许使用密码,并且不允许设置特定的密钥和 IV 值。
c# - Java 等效于 C# 的 Rfc2898DerivedBytes
我想知道是否有人试图做相当于
在爪哇。其中 secret 是一个字符串(密码),而 saltValueBytes 是字节数组中的盐。
我已经尝试过一些东西,但似乎无法理解它。
c# - 使用 Rfc2898DeriveBytes 在 C# 中实现 PBKDF2
伙计们,我正在尝试在 C# 中实现一个 PBKDF2 函数,该函数创建一个 WPA 共享密钥。我在这里找到了一些:http: //msdn.microsoft.com/en-us/magazine/cc163913.aspx似乎产生了一个有效的结果,但它的一个字节太短了......而且 PSK 值错误。
为了测试输出,我将其与此进行比较:http ://www.xs4all.nl/~rjoris/wpapsk.html或http://anandam.name/pbkdf2/
我确实找到了一种方法来让它与一个名为 Rfc2898DeriveBytes 的 C# 内置库一起工作。使用它,我得到一个有效的输出:
现在,我使用 Rfc2898DeriveBytes 的一个限制是“盐”必须是 8 个八位字节长。如果它更短,则 Rfc2898DeriveBytes 会引发异常。我在想我所要做的就是将盐(如果它更短)填充到 8 个字节,我会很好。但不是!我已经尝试了几乎所有填充与较短盐的组合,但我无法复制从上面这两个网站获得的结果。
所以底线是,这是否意味着 Rfc2898DeriveBytes 根本无法与短于 8 字节的源盐一起工作?如果是这样,是否有人知道我可以使用为 WPA 预共享密钥实现 PBKDF2 的任何 C# 代码?
.net - PasswordDeriveBytes 与 Rfc2898DeriveBytes,已过时但速度更快
我正在研究基于从 SymmetricAlgorithm 继承的类(例如 TripleDes、DES 等)的加密功能。
基本上有两个选项可以为我的算法类生成一致的密钥和 IV,PasswordDeriveBytes
并且Rfc2898DeriveBytes
都继承自 DeriveBytes 抽象类。
该PasswordDeriveBytes.GetBytes()
方法在 .NET 框架中被标记为过时,而推荐使用 Rfc2898DeriveBytes.GetBytes(),因为它符合 PBKDF2 标准。但是,根据我的测试,GetBytes()
在 Rfc2898DeriveBytes 类中调用相同的方法几乎比在PasswordDeriveBytes
类中慢 15 倍,这导致了意外的 CPU 使用率(总是高于 50%)。
以下是一些测试数据:
- 迭代次数:100
- 算法类型:DES
- 原文:“我是测试密钥,请给我加密”
- 时间:
- PasswordDeriveBytes:99 毫秒
- Rfc2898DeriveBytes:1,373 毫秒
根据测试,Rfc2898DeriveBytes
生产环境中的不良性能是不能接受的。
以前有没有人注意到这个问题?任何解决方案我仍然可以使用标准解决方案而不会影响性能?使用过时的方法有任何风险(可以在未来的版本中删除)?
多谢你们!
编辑:
可能我发现问题出在哪里了……默认的迭代计数PasswordDeriveBytes
是100,而forRfc2898DeriveBytes
是1000。在我将它们更改为与1000相同的数字后,执行Rfc2898DeriveBytes
时间只有两倍。
security - 公共覆盖函数 GetBytes() 因为 Byte() 已过时
诗人试图表达什么?
公共覆盖函数 GetBytes() 由于 Byte() 已过时:Rfc2898DeriveBytes 替换 PasswordDeriveBytes 以从密码中获取密钥材料,并且在新应用程序中是首选。
我要不要换这个...
...什么?
c# - RFC2898DeriveBytes 如何生成 AES 密钥?
我看到了一些类似的代码
我可以看到密钥是由带有密码和盐的 Rfc2898DeriveBytes 生成的。然后 AES 通过 GetBytes 检索密钥。
但问题是,RFC2898DeriveBytes 是做什么的,key.GetBytes(cb) 是做什么的?谁能详细说明一下?我无法从文档中得到它。
c# - 为什么我需要使用 Rfc2898DeriveBytes 类(在 .NET 中)而不是直接使用密码作为密钥或 IV?
使用 Rfc2898DeriveBytes 和仅使用 有什么区别Encoding.ASCII.GetBytes(string object);
?
我在这两种方法上都取得了相对成功,前者是一种更冗长的方法,而后者则简单明了。两者似乎都允许你最终做同样的事情,但我很难看出使用前者而不是后者的意义。
我能够掌握的基本概念是,您可以将字符串密码转换为字节数组以用于例如对称加密类,AesManaged
. 通过 RFC 类,但您可以在创建 rfc 对象时使用盐值和密码。我认为它更安全,但充其量仍然是一个没有受过教育的猜测!此外,它还允许您返回一定大小的字节数组,以及类似的东西。
这里有几个例子可以告诉你我来自哪里:
或者
'rfcKey' 对象现在可用于在对称加密算法类上设置 .Key 或 .IV 属性。
IE。
'rj' 应该准备好了!
令人困惑的部分......所以除了使用'rfcKey'对象之外,我可以不只使用我的'myPassInBytes'数组来帮助设置我的'rj'对象吗?
我曾尝试在 VS2008 中执行此操作,但直接答案是否定的。但是对于为什么使用 RFC 类而不是我上面提到的其他替代方法,你们有更好的教育答案吗?
security - 盐是否需要随机来保护密码哈希?
我对安全性知之甚少(我需要找到基础知识的基本解释),并试图提出一种合理的方法来使用 .Net 将用户密码存储在数据库中。
这是我目前的解决方案:
我将 HashPassword() 的结果存储在数据库中。要检查用户的密码,我这样做:
我的问题是盐是否需要像这样随机存储在数据库中,或者我是否可以生成一个 10 字节的盐并将其存储在我的代码中,并始终使用相同的盐来保存自己将盐存储在数据库中存储密钥?
此外,如果有人看到我正在做的任何其他问题,我将不胜感激任何建议。
java - Java 中的 RFC2898DeriveBytes 实现
作为我们项目的一部分,我必须解密用 C# 加密的字符串。此解密使用 AES 算法和打包模式作为 PKCS7 完成。为了生成初始化向量,他们使用了以下内容:
salt 是默认字节。
该 IV 用于使用 AES 加密字符串。
我通读了一些文档,发现AES可以用Java实现。但不确定如何通过 IV 和打包模式。
此外,我还看到有 CBC、ECB 模式用于提及密码块模式。我不确定 C# 对应项中使用的是什么模式。
下面是 C# 中的代码
任何人都可以帮助我在 Java 中创建等价物吗?
java - 如何将此 C# 加密函数转换为 Java?
我需要将以下 C# 代码翻译成 Java,但是,我找不到任何与 C# 的 Rfc2898DerivedBytes 和 Rijndael 等效的 Java。
[更新]
我需要使用这个函数来加密新创建的用户的密码,并且加密的密码也应该被包括 C# 在内的其他调用者正确解密。
我按照评论和答案中列出的文档,并尝试在下面写简单的示例以快速验证。
}
但是,密文的长度是48,但实际上在C#中,看起来是这样的格式
WHUNV5xrsfETEiCwcT0M731+Ak1jibsWEodJSaBraP1cmmkS1TpGWqwt/6p/a7oy8Yq30ImZPbFF+Y0JNLa3Eu2UGuazZtuhEepUIIdaDEtA2FO0JYIj2A==
共 120 个字符。
代码有问题吗?