原由對接合做夥伴的系統,須要對數據進行AES加密html
默認的使用了已經寫好的幫助類中加密算法,發現結果不對,各類嘗試改變加密模式改變向量等等折騰快一下午。最後網上查了下AES在JAVA裏面的實現完整代碼以下:java
public static String AesEncrypt(String content,String encyKey) { try { KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(encyKey.getBytes()); kgen.init(128, secureRandom); Cipher cipher=Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE,new SecretKeySpec(kgen.generateKey().getEncoded(),"AES")); byte[] byteContent = content.getBytes("utf-8"); byte[] result = cipher.doFinal(byteContent); BASE64Encoder encode = new BASE64Encoder (); String strResult=encode.encode(result); return strResult; } catch (Exception e) { e.printStackTrace(); } return null; }
根據博主:http://www.cnblogs.com/amylis_chen/p/6107162.html#commentform 的經驗有了思路算法
解決辦法,經過JAVA代碼生成AES的密鑰,再經過C#代碼進行AES加密dom
//JAVA代碼生成密鑰 String encyKey="合做夥伴提供的密鑰 "; KeyGenerator kgen = KeyGenerator.getInstance("AES"); java.security.SecureRandom random = java.security.SecureRandom.getInstance("SHA1PRNG"); random.setSeed(encyKey.getBytes()); kgen.init(128, random); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); BASE64Encoder coder = new BASE64Encoder(); System.out.println(coder.encode(enCodeFormat));
C#代碼進行AES加密加密
class Program { static void Main(string[] args) { //默認密鑰向量 var result = AESEncode("123456", "JAVA代碼輸出的密鑰"); Console.WriteLine(result); Console.ReadLine(); } public static string AESEncode(string encryptString, string encryptKey) { if (string.IsNullOrEmpty(encryptString)) return null; Byte[] toEncryptArray = Encoding.UTF8.GetBytes(encryptString); RijndaelManaged rm = new RijndaelManaged { Key = Convert.FromBase64String(encryptKey), Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }; ICryptoTransform cTransform = rm.CreateEncryptor(); Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); } }
其餘解決辦法:讓對方提供一個大包的dll進行調用code