繁体   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