Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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 decrytpion&;c#加密非法密钥大小问题_C#_Java_Cryptography_Aes - Fatal编程技术网

java decrytpion&;c#加密非法密钥大小问题

java decrytpion&;c#加密非法密钥大小问题,c#,java,cryptography,aes,C#,Java,Cryptography,Aes,我们正在用一个c#应用程序从此代码中加密/解密我们组织的文档 var msData = new MemoryStream(); CryptoStream cs = null; if (inputFileStream.CanSeek) inputFileStream.Seek(0, SeekOrigin.Begin); try { long

我们正在用一个c#应用程序从此代码中加密/解密我们组织的文档

var msData = new MemoryStream();
            CryptoStream cs = null;
            if (inputFileStream.CanSeek)
                inputFileStream.Seek(0, SeekOrigin.Begin);
            try
            {
                long inputFileLength = inputFileStream.Length;
                var byteBuffer = new byte[4096];
                long bytesProcessed = 0;
                int bytesInCurrentBlock = 0;

                var csRijndael = new RijndaelManaged();
                switch (action)
                {
                    case CryptoAction.Encrypt:
                        cs = new CryptoStream(msData, csRijndael.CreateEncryptor(this.Key, this.IV), CryptoStreamMode.Write);
                        break;

                    case CryptoAction.Decrypt:
                        cs = new CryptoStream(msData, csRijndael.CreateDecryptor(this.Key, this.IV), CryptoStreamMode.Write);
                        break;
                }

                while (bytesProcessed < inputFileLength)
                {
                    bytesInCurrentBlock = inputFileStream.Read(byteBuffer, 0, 4096);
                    cs.Write(byteBuffer, 0, bytesInCurrentBlock);
                    bytesProcessed += bytesInCurrentBlock;
                }
                cs.FlushFinalBlock();

                return msData.ToArray();
            }
            catch(Exception ex)
            {
                new Com.Library.SqlLog().InsertSqlLog(Auth.currentMemberInfo.LoginId, MethodInfo.GetCurrentMethod().Name, ex);
                return null;
            }
现在是我的问题。我将其作为init vector传递

static byte IV[] = new byte[] {0x0E,0x15,(byte)0xC4,(byte)0xBB,
             (byte)0xEE,(byte)0xDF,0x72,0x0C,0x4F,0x7E,(byte)0xBE,0x67,0x4A,(byte)0xB6,0x45,(byte)0xDE};
这是一把钥匙

static byte[] keyGen = new byte[]{0x78,(byte)0x9C,(byte)0xF1,0x01,0x12,0x31,(byte)0xCD,0x1E,0x1F,0x16,0x54,0x19,0x1D,(byte)0xFF,(byte)0xC7,
            0x00,0x51,(byte)0xBF,(byte)0xFD,0x31,(byte)0xE1,(byte)0xA1,(byte)0xDC,(byte)0xC9,0x23,0x49,(byte)0xAD,0x11,0x16,0x17,0x1D,0x1F};

但当我运行此程序时,它会抛出下面给出的异常

java.security.InvalidKeyException: Illegal key size
    at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1023)
    at javax.crypto.Cipher.implInit(Cipher.java:789)
    at javax.crypto.Cipher.chooseProvider(Cipher.java:848)
    at javax.crypto.Cipher.init(Cipher.java:1347)
    at javax.crypto.Cipher.init(Cipher.java:1281)
    at DecryptAspEncryptedDocs.main(DecryptAspEncryptedDocs.java:80)
现在我被困在这里,不知道该怎么办。任何帮助都将不胜感激

编辑1:

我已经看到,JAR被放置在jre/lib/security和jdk/lib/security中。但问题仍然悬而未决,并引发
非法密钥大小
异常

根据AES的密钥大小,它将受到导出控制。我建议您下载无限jce辖区策略文件并将其安装到Java环境中


AES256将需要策略文件的无限制配置

根据AES的密钥大小,它将受到出口控制。我建议您下载无限jce辖区策略文件并将其安装到Java环境中


AES256将需要策略文件的无限制配置

自述文件中没有明确说明“JCE无限强度权限策略文件”应该复制到JDK内部的jre,否则它将无法工作。文件的路径应该是:/Path/to/jdk1.7.0_xx/jre/lib/security

自述文件中没有明确说明“JCE无限强度权限策略文件”应该复制到JDK内部的jre,否则它将无法工作。文件路径应为:/Path/to/jdk1.7.0_xx/jre/lib/security

是的,我aleady通过查看此问题做到了这一点是的,我aleady通过查看此问题做到了这一点(当我将模式更改为CBC时)。GregS我提供了AES/CBC/NoPadding,但它再次表示“非法密钥大小”正如我所说,它适合我,我知道我安装了无限加密策略jar。尽管你有自己的信仰,但似乎你没有。可能您安装了多个版本的Java,或者您错误地安装了策略文件。您能否发布代码以寻求帮助。可能是我在使用您的代码时出错了。我复制并粘贴了您的示例中的行,包括
cipher.init()
行,并复制并粘贴了您的keyGen和IV。这对我很有用(当我将模式更改为CBC时)。GregS我提供了AES/CBC/NoPadding,但它再次表示“非法密钥大小”正如我所说,它适合我,我知道我安装了无限加密策略jar。尽管你有自己的信仰,但似乎你没有。可能您安装了多个版本的Java,或者您错误地安装了策略文件。您能否发布代码以寻求帮助。可能是我在使用您的代码时出错了。我复制并粘贴了示例中的行,包括
cipher.init()
行,并复制并粘贴了keyGen和IV。
java.security.InvalidKeyException: Illegal key size
    at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1023)
    at javax.crypto.Cipher.implInit(Cipher.java:789)
    at javax.crypto.Cipher.chooseProvider(Cipher.java:848)
    at javax.crypto.Cipher.init(Cipher.java:1347)
    at javax.crypto.Cipher.init(Cipher.java:1281)
    at DecryptAspEncryptedDocs.main(DecryptAspEncryptedDocs.java:80)