可以在.Net Framework中实现带有SecureRandom(“ SHA1PRNG”)的KeyGenerator吗?

时间:2020-09-09 09:10:30

标签: java c# .net cryptography

我撞墙了,希望有人能帮忙。作为身份验证机制的一部分,我必须加密一个字符串,该字符串将在其他地方(不受我控制)解密。

有人告诉我它使用密码“ AES / ECB / PKCS5Padding”,并且给了我一个128位的加密密钥。 用C#实现此功能后,它与预期的输出不匹配。

我在动手.jar时,似乎使用加密密钥的方式与我预期的方式不同,而且我还没有弄清楚如何甚至可以将其移植到C#。 Java:

   String secretKey = "1234567890abcdef" //example
   KeyGenerator keyGen = KeyGenerator.getInstance("AES");
   SecureRandom sRandom = SecureRandom.getInstance("SHA1PRNG");
   sRandom.setSeed(secretKey.getBytes("UTF-8"));
   keyGen.init(128, sRandom);
   SecretKey generatedKey = keyGen.generateKey();
   byte[] encodedKey = generatedKey.getEncoded();
   SecretKeySpec realKey = new SecretKeySpec(encodedKey, "AES");
   Cipher cipherInstance = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
   cipherInstance.init(1, realKey); 
   String encryptedText bytesToHexString(cipherInstance.doFinal("text to encode".getBytes("UTF-8")));

除了生成上面的encodedKey之外,我已经把所有精力都弄下来了。

请问有人可以帮忙吗? :)

编辑:我相信上面的示例应该产生4a031f9da16717d442c0d06c415435b5

0 个答案:

没有答案
相关问题