Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
使用AES加密Java到C#_Java_C#_Encryption_Aes_Aescryptoserviceprovider - Fatal编程技术网

使用AES加密Java到C#

使用AES加密Java到C#,java,c#,encryption,aes,aescryptoserviceprovider,Java,C#,Encryption,Aes,Aescryptoserviceprovider,我们让应用程序完成C#,并将参数传递给Java应用程序。为了保证安全,我们Java应用程序开发人员提出了AES加密。开发人员给出了Java的示例代码。好心有人帮我。如何在C中以同样的方式加密# //Cryptix导入 导入java.security.NoSuchAlgorithmException; 导入java.security.NoSuchProviderException; 导入cryptix.provider.key.RawSecretKey; 导入cryptix.util.core.H

我们让应用程序完成C#,并将参数传递给Java应用程序。为了保证安全,我们Java应用程序开发人员提出了AES加密。开发人员给出了Java的示例代码。好心有人帮我。如何在C中以同样的方式加密#

//Cryptix导入
导入java.security.NoSuchAlgorithmException;
导入java.security.NoSuchProviderException;
导入cryptix.provider.key.RawSecretKey;
导入cryptix.util.core.Hex;
导入xjava.security.Cipher;
公共类加密{
私有密码m_alg;
私钥;
私有静态最终字符串RIJNDAEL=“RIJNDAEL”//加密模式
私有静态最终字符串提供程序\u CRYPTIX=“CRYPTIX”//加密算法提供程序
/**
*必须(一次)动态安装。-也可以设置
*通过更改安全提供程序,在$JAVAHOME/lib/security中进行静态设置。
*
*/
静止的{
java.security.security.addProvider(新的cryptix.provider.cryptix());
println(“Java安全-添加安全提供程序-添加Cryptix提供程序”);
}
公共加密(字符串加密密钥)
抛出java.security.NoSuchProviderException、java.security.NoSuchAlgorithmException{
//System.out.println(“用于加密/解密的密钥:-”+secretKey);
m_alg=Cipher.getInstance(RIJNDAEL,PROVIDER_CRYPTIX);
m_key=新的RawSecretKey(RIJNDAEL,十六进制fromString(secretKey));
}
/**
*加密提供的字符串。
*
*@param str已加密
*@return加密字符串
*/
公共字符串加密(String str)抛出java.security.KeyException{
字节[]ect=null;
str=转换(str);//必要时填充
//System.out.println(“要加密的字符串[“+str+”]”);
m_alg.initEncrypt(m_密钥);
ect=m_alg.crypt(str.getBytes());
//System.out.println(“加密字符串[”+Hex.toString(ect)+“]);
返回六角toString(ect);
}
公共字符串解密(String str)抛出java.security.KeyException{
字节[]dct=null;
字符串解密字符串;
//System.out.println(“要解密的字符串[“+str+”]”);
m_alg.initDecrypt(m_密钥);
dct=m_alg.crypt(十六进制fromString(str));
decryptedString=新字符串(dct);
//System.out.println(“解密字符串[“+解密字符串+”]);
返回decryptedString.trim();
}
/**
*将字符串转换为字节数组并转换为
*填充字节数组(0)以填充最后一个块。
*
*基于密码定义的块大小填充值。
*
*@param str
*@返回
*/
私有字符串转换(字符串str){
int padding=0,sourceLength=0,i,blockSize;
sourceLength=str.length();
blockSize=m_alg.blockSize();
padding=blockSize-(sourceLength%blockSize);
如果(填充!=块大小){
对于(i=0;i
 using (var random = new System.Security.Cryptography.RNGCryptoServiceProvider())
        {
            var key = new byte[16];
            random.GetBytes(key);

            using (System.Security.Cryptography.AesCryptoServiceProvider aesAlg = new System.Security.Cryptography.AesCryptoServiceProvider())
            {
                aesAlg.BlockSize = 128;
                aesAlg.KeySize = 128;
                aesAlg.Key = key;
                aesAlg.IV = key;
                aesAlg.Mode = System.Security.Cryptography.CipherMode.CBC;
                aesAlg.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
                using (ICryptoTransform iCryptoper = aesAlg.CreateEncryptor())
                {
                    byte[] encryptedData = iCryptoper.TransformFinalBlock(x509CertData, 0, x509CertData.Length);
                    string encodedCert = Convert.ToBase64String(encryptedData);

                    System.Security.Cryptography.X509Certificates.X509Certificate2 x509Cert = new System.Security.Cryptography.X509Certificates.X509Certificate2(x509CertData);
                    System.Security.Cryptography.RSACryptoServiceProvider provider = (System.Security.Cryptography.RSACryptoServiceProvider)x509Cert.PublicKey.Key;
                    byte[] encrypted = provider.Encrypt(aesAlg.Key, false);
                    string test = Convert.ToBase64String(encrypted);


                }

            }
        }
javax.crypto.SecretKey sc = new javax.crypto.spec.SecretKeySpec(secretKey, "AES");
Cipher dcipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
dcipher.init(Cipher.DECRYPT_MODE, sc, ivParameterSpec);
byte[] decyrptedCert = dcipher.doFinal(java.util.Base64.getDecoder().decode(stringToDecrypt));