1. 程式人生 > 實用技巧 >c# 與java對應的 aes加密(帶向量的)

c# 與java對應的 aes加密(帶向量的)

using System;
using System.Security.Cryptography;
using System.Text;


public class AESUtil
{

    /// <summary>
    /// AES加密
    /// </summary>
    /// <param name="str">需要加密的字串</param>
    /// <param name="key">32位金鑰</param>
    /// <param name="iv">向量(一定要問問對面要用什麼向量)</param>
/// <returns>加密後的字串</returns> public static string Encrypt(string str, string key, string iv) { byte[] keyArray = Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = Encoding.UTF8.GetBytes(str); var rijndael = new RijndaelManaged(); rijndael.Key
= keyArray; rijndael.Mode = CipherMode.CBC; rijndael.Padding = PaddingMode.PKCS7; rijndael.IV = Encoding.UTF8.GetBytes(iv); ICryptoTransform cTransform = rijndael.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length); } /// <summary> /// AES解密 /// </summary> /// <param name="str">需要解密的字串</param> /// <param name="key">32位金鑰</param> /// <param name="iv">向量(一定要問問對面要用什麼向量)</param> /// <returns>解密後的字串</returns> public static string Decrypt(string str, string key, string iv) { byte[] keyArray = Encoding.UTF8.GetBytes(key); byte[] toEncryptArray = Convert.FromBase64String(str); var rijndael = new RijndaelManaged(); rijndael.Key = keyArray; rijndael.Mode = CipherMode.CBC; rijndael.Padding = PaddingMode.PKCS7; rijndael.IV = Encoding.UTF8.GetBytes(iv); ICryptoTransform cTransform = rijndael.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray); } }

程式碼賦值黏貼直接用,樓主已經和對應的java對比了無數遍了,加密後的字串是一樣的