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
Post a Comment