簡體   English   中英

將 java 加密轉換為 c#

[英]Convert java encryption to c#

我正在努力將以下代碼轉換為 c#:

private SecretKey generateSecretKey(char[] key, byte[] salt) {
  this.FACTORY = SecretKeyFactory.getInstance("PBEWithHmacSHA256AndAES_256");
  KeySpec spec = new PBEKeySpec(key, salt, 65536, 256);
  SecretKey tmp = this.FACTORY.generateSecret(spec);
  return new SecretKeySpec(tmp.getEncoded(), "AES");
} 

c#中PBEWithHmacSHA256AndAES_256/PBEKeySpec背后對應的算法是什么?

然后將 java 代碼用於以下用途:

this.secretKey = generateSecretKey(this.key, newSalt);
Cipher c = Cipher.getInstance("AES/CBC/PKCS5PADDING");
c.init(2, this.secretKey, new IvParameterSpec(IV));

另外我注意到 C# 中不存在 PKCS5PADDING 可以用 PKCS7 替換嗎? 任何幫助,將不勝感激!

我做了一個快速的研究,你去吧!

似乎是 7 和 5 填充算法。 是相同的。
嘗試使用單獨的庫,例如 BouncyCastle。

使用 Bouncy Castle AES/CBC/PKCS7 加密字符串

好的,我們似乎可以解決您的部分問題,但不幸的是,Bouncy Castle不支持PBEWITHHMACSHA256ANDAES_256。

想到的最后一個想法是使用 IKVM.net。 我知道不建議這樣做,但應該可以。 找到源代碼並使用來自例如com.sun.crypto.provider.SunJCEPBEWITHHMACSHA256ANDAES_256提供程序重新編譯它。 更多關於在這里重新編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM