java aes Encrypt matches in c# -


this java code:

import javax.crypto.*; import javax.crypto.spec.secretkeyspec; import java.io.unsupportedencodingexception; import java.security.invalidkeyexception; import java.security.messagedigest; import java.security.nosuchalgorithmexception; import java.security.securerandom;  public class main {       /**      * entry content      *      * @param content  content need entry      * @param password key      * @return      */     public static string md5aessign(string content, string password) {          messagedigest md;         try {              keygenerator kgen = keygenerator.getinstance("aes");              securerandom random = securerandom.getinstance("sha1prng");             random.setseed(password.getbytes());             kgen.init(128, random);              secretkey secretkey = kgen.generatekey();             byte[] encodeformat = secretkey.getencoded();             secretkeyspec key = new secretkeyspec(encodeformat, "aes");             cipher cipher = cipher.getinstance("aes");             cipher.init(cipher.encrypt_mode, key);               byte[] bytecontent = content.getbytes("gbk");              md = messagedigest.getinstance("md5");             md.update(bytecontent);             byte[] result = cipher.dofinal(md.digest());              return parsebyte2hexstr(result);          } catch (nosuchalgorithmexception e) {             e.printstacktrace();         } catch (nosuchpaddingexception e) {             e.printstacktrace();         } catch (invalidkeyexception e) {             e.printstacktrace();         } catch (unsupportedencodingexception e) {             e.printstacktrace();         } catch (illegalblocksizeexception e) {             e.printstacktrace();         } catch (badpaddingexception e) {             e.printstacktrace();         }         return null;     }      /**      *      *      * @param buf      * @return      */      public static string parsebyte2hexstr(byte buf[]) {         stringbuffer sb = new stringbuffer();         (int = 0; < buf.length; i++) {             string hex = integer.tohexstring(buf[i] & 0xff);             if (hex.length() == 1) {                 hex = '0' + hex;             }             sb.append(hex.touppercase());         }         return sb.tostring();     }       public static void main(string[] args) {         system.out.println("hello world!");          string content = "hello world!";         string key = "1234567812345678";          system.out.println(md5aessign(content, key));     } } 

well ,i want implement in c#. here code...

using system; using system.collections.generic; using system.linq; using system.security.cryptography; using system.text; using system.threading.tasks;  namespace testdes {     class test     {         public static string encrypt(string toencrypt, string key)         {             md5cryptoserviceprovider md5 = new md5cryptoserviceprovider();             byte[] temp = encoding.getencoding("gbk").getbytes(toencrypt);             byte[] toencryptarray = md5.computehash(temp);              rijndaelmanaged rdel = new rijndaelmanaged();             var aes = new aesmanaged();             var sha1 = new sha1managed();              var bytehash = sha1.computehash(encoding.utf8.getbytes(key));             var truncatedhash = new byte[16];             array.copy(bytehash, truncatedhash, math.min(truncatedhash.length, bytehash.length));              rdel.keysize = 128;             rdel.blocksize = 128;             rdel.key = truncatedhash;             rdel.mode = ciphermode.ecb;              rdel.padding = paddingmode.pkcs7;              icryptotransform crypto = rdel.createencryptor();              byte[] cryptdata = crypto.transformfinalblock(toencryptarray, 0, toencryptarray.length);              return parsebyte2hexstr(cryptdata);          }          /// <summary>         ///          /// </summary>         /// <param name="buffer"></param>         /// <returns></returns>         public static string parsebyte2hexstr(byte[] buffer)         {             stringbuilder sb = new stringbuilder();             (int = 0; < buffer.length; i++)             {                 sb.append(buffer[i].tostring("x2"));             }             return sb.tostring();         }          static void main(string[] args)         {             string content = "hello world!";             string key = "1234567812345678";              console.writeline(encrypt(content, key));              console.readkey();         }     } } 

but don't matches...

java output : c9ba133078bb8ae69fb56d2f76d5e5d17ecc29afa9533026d2cf87c4dfae29d9 c# output : a7280364dd9ac4a1867aaf22c049ec05c7225a807fb0e39e0bff3047382ef901

i want c# equals java. platform: jdk 1.7; .net 4.0.


Comments