我正在弄乱C#Bouncy Castle API以找到如何进行PBKDF2密钥派生.
我现在真的很无能为力.
我尝试通过Pkcs5S2ParametersGenerator.cs和PBKDF2Params.cs文件阅读,但我真的无法弄清楚如何做到这一点.
根据我迄今为止所做的研究,PBKDF2需要一个字符串(或char []),它是密码,盐和迭代计数.
到目前为止,迄今为止最有前途和最明显的是PBKDF2Params和Pkcs5S2ParametersGenerator.
这些似乎都不接受字符串或char [].
有没有人用C#做过这个或者对此有任何线索?或者也许有人在Java中实现了BouncyCastle并可以提供帮助?
Thanx提前很多:)
更新:我在Bouncy Castle找到了如何做到这一点.看下面的答案:)
我想使用带有SHA256的PBKDF2生成密码的派生哈希.与此SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1")这项工作,但它使用SHA1.随着SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")(或SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256","SC")与spongycastle一起)我有一个错误.
如何使用PBKDF2WithHmacSHA256成功生成哈希?
读到 RijndaelManaged 已被弃用并且AesGcm(在 .NET Core 3.1 中引入)优于AesManaged后,我尝试使用本教程和此答案来实现AesGcm。
这是我的代码:
/// Perform AES Encryption, returning the result as a byte array.
/// </summary>
/// <param name="bytesToEncrypt">string, file or data represented as byte array</param>
/// <param name="passwordBytes">A unique password for the encryption (must be 32 bytes?)</param>
/// <returns>The data encrypted</returns>
public byte[] EncryptData(byte[] bytesToEncrypt, byte[] passwordBytes)
{
// Based on /sf/ask/4262254181/#60891115
// Get parameter sizes
int nonceSize = AesGcm.NonceByteSizes.MaxSize;
int tagSize = …Run Code Online (Sandbox Code Playgroud) c# ×2
encryption ×2
pbkdf2 ×2
aes ×1
aes-gcm ×1
android ×1
bouncycastle ×1
cryptography ×1
sha256 ×1