Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中System.Security.Cryptography的等效代码_Java_C#_.net_Encryption - Fatal编程技术网

Java中System.Security.Cryptography的等效代码

Java中System.Security.Cryptography的等效代码,java,c#,.net,encryption,Java,C#,.net,Encryption,我正在尝试将以下C#代码转换为Java,该代码使用.NET库(System.Security.Cryptography),我需要一个解决方案,以便使用Java获得相同的结果: internal static class CryptoHelper { // keys must be 16 characters long (and ASCII) public const string DefaultKey = "2$8Kba19z23asd!#"; public const string

我正在尝试将以下C#代码转换为Java,该代码使用.NET库(System.Security.Cryptography),我需要一个解决方案,以便使用Java获得相同的结果:

internal static class CryptoHelper
{
  // keys must be 16 characters long (and ASCII)
  public const string DefaultKey = "2$8Kba19z23asd!#";
  public const string IV = "0000000000000000";

  enum CryptoTransformType
  {
     Encryptor,
     Decryptor
  }

  public static byte[] Encrypt(bool FIPScompatible, string key, byte[] data)
  {
     if(key == null) throw new ArgumentNullException("key");
     if(data == null) return null;

     // Create the crypto
     ICryptoTransform transform = CreateCryptoTransform(FIPScompatible,CryptoTransformType.Encryptor, key, IV);

     // Encrypt the data
     using(MemoryStream ms = new MemoryStream())
     {
        using(CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write))
        {
           cs.Write(data, 0, data.Length);
           cs.FlushFinalBlock();
        }

        byte[] encryptedData = ms.GetBuffer();
        return encryptedData;
     }
  }

  public static byte[] Decrypt(bool FIPScompatible, string key, byte[] data)
  {
     if(key == null) throw new ArgumentNullException("key");
     if(data == null) return null;

     // Create the crypto
     ICryptoTransform transform = CreateCryptoTransform(FIPScompatible,CryptoTransformType.Decryptor, key, IV);

     // Decrypt the data
     using(MemoryStream ms = new MemoryStream(data))
     {
        using(CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Read))
        {
           byte[] decryptedData = new byte[data.Length];
           cs.Read(decryptedData, 0, decryptedData.Length);

           return decryptedData;
        }
     }
  }

  private static ICryptoTransform CreateCryptoTransform(bool FIPScompatible,CryptoTransformType transformType, string key, string iv)
  {
     if (!FIPScompatible)
     {
        RijndaelManaged rijndael = new RijndaelManaged();
        rijndael.Mode = CipherMode.CBC;
        rijndael.Padding = PaddingMode.Zeros;
        rijndael.BlockSize = 128;

        byte[] bykey = Encoding.ASCII.GetBytes(key);
        byte[] byiv = Encoding.ASCII.GetBytes(iv);

        ICryptoTransform transform = null;

        if (transformType == CryptoTransformType.Encryptor)
           transform = rijndael.CreateEncryptor(bykey, byiv);
        else
           transform = rijndael.CreateDecryptor(bykey, byiv);

        return transform;
     }
     else
     {
        AesCryptoServiceProvider provider = new AesCryptoServiceProvider();
        provider.Padding = PaddingMode.Zeros;
        provider.BlockSize = 128;
        byte[] bykey = Encoding.ASCII.GetBytes(key);
        byte[] byiv = Encoding.ASCII.GetBytes(iv);

        ICryptoTransform transform = null;

        if (transformType == CryptoTransformType.Encryptor)
           transform = provider.CreateEncryptor(bykey, byiv);
        else
           transform = provider.CreateDecryptor(bykey, byiv);

        return transform;
     }
  }      
 }

我尝试了一种方法,但无法获得与.NET代码相同的结果,我尝试的方法将添加到评论中。

不要将该方法添加到评论中,请将其添加到问题中。在提问之前,您应该始终尝试搜索Google/SO。