Tag: rijndaelmanaged

解密由.NET的RijndaelManaged使用Java加密的字节

我正在尝试解密使用RijndaelManaged of .NET / C#加密的东西,使用Java进行解密。 C#程序不是我的; 我无法将其更改为更具互操作性。 但我知道它是如何加密的: byte[] bytes = new UnicodeEncoding().GetBytes(password); // edit: built-in is 8chars FileStream fileStream = new FileStream(outputFile, FileMode.Create); RijndaelManaged rijndaelManaged = new RijndaelManaged(); CryptoStream cryptoStream = new CryptoStream((Stream) fileStream, rijndaelManaged.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write); 我不知道如何在Java端解密这个。 我发现最接近有用的是这篇博客文章 ,但它对实际细节很清楚,我无法实现解密器。 编辑:我是个白痴,现在有了它的工作。 UnicodeEncoding是UTF-16LE,而我使用的是UTF-8。 在插入密码时切换到正确的编码已修复程序。 我还需要获得BouncyCastle并执行Cipher.getInstance(“AES/CBC/PKCS7Padding”, “BC”); finaledit:这是用Java解密来自.NET的默认 RijndaelManaged流的代码,假设它是使用原始密码作为密钥创建的: Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); String password = “kallisti”; // […]

使用C#加密AES以匹配Java加密

我已经获得了加密的Java实现,但不幸的是我们是一个.net商店,我无法将Java整合到我们的解决方案中。 可悲的是,我也不是一个爪哇人,所以我已经和它斗争了几天,并且以为我终于转到这里求助了。 我已经搜索了高低,以寻找与Java加密工作方式相匹配的方法,并且我已经达到了在c#中使用RijndaelManaged所需的分辨率。 我其实很亲密。 我在c#中返回的字符串与前半部分匹配,但后半部分不同。 这是java实现的一个片段: private static String EncryptBy16( String str, String theKey) throws Exception { if ( str == null || str.length() > 16) { throw new NullPointerException(); } int len = str.length(); byte[] pidBytes = str.getBytes(); byte[] pidPaddedBytes = new byte[16]; for ( int x=0; x<16; x++ ) { if ( x […]