2016-05-04 86 views
1

我想端口這段代碼C#C#相當於Java的KDFCounterBytesGenerator(從BouncyCastle的)

byte[] result = new byte[length]; 
byte[] data = ...; 
byte[] key = ...; 

HMac hMac = new HMac(new SHA256Digest()); 
KDFCounterBytesGenerator g = new KDFCounterBytesGenerator(hMac); 
g.init(new KDFCounterParameters(key, data, 32)); 
g.generateBytes(result , 0, result .length); 

但我無法找到C#BouncyCastle的庫中的任何等價類。
有什麼建議嗎?

編輯: 我從Java源代碼移植的KDFCounterBytesGenerator它工作得很好..

+0

我看到你已經從Java移植了實現。你能分享一下代碼嗎? – kosmakoff

回答

0

BouncyCastle has an equivalent library for C#應包含最如果不是所有的相同的功能,它的Java版本有一些小的語法差異:

enter image description here

你應該能夠通過的NuGet來安裝它,然後相應地引用它:

// Using statements (for BouncyCastle) 
using Org.BouncyCastle.Crypto.Digests; 
using Org.BouncyCastle.Crypto.Generators; 

// Define your byte[]s 
byte[] result = new byte[1]; 
byte[] data = new byte[2]; 
byte[] key = new byte[3]; 

// Build your HMac, Generator and generate your bytes 
HMac hMac = new HMac(new Sha256Digest()); 
Kdf1BytesGenerator g = new Kdf1BytesGenerator(hMac.GetUnderlyingDigest()); 
g.Init(new Org.BouncyCastle.Crypto.Parameters.KdfParameters(key, data)); 
g.GenerateBytes(result, 0, result.Length); 
+0

這不適合我。結果是不同的! –

+0

您可能會考慮嘗試'Kdf2BytesGenerator'類以及它可能會有不同的結果。我在一段時間內沒有和BouncyCastle一起工作,或者使用過你指定的方法,但我會假設存在等價的方法。我已經更新了示例以使用可能會有影響的'HMac'對象 –