2017-03-14 5 views
0

JavaコードにCryptoJS AESを変換するためにどのように私はjavascriptのコードです.This JavaコードにCryptoJSコード翻訳したい

CryptoJS.AES.encrypt('hello',CryptoJS.enc.Utf8.parse(CryptoJS.MD5("http://stackoverflow.com")), {iv: CryptoJS.enc.Utf8.parse("1234567812345678")}) 

コードの結果上記の文字列を呼び出すには、「QtzDsbCgmA9 + XBVEsEm70w ==」

です

は、その後、私はCryptoJS.MD5( "http://stackoverflow.com").toString()メソッド(キー= 57f4dad48e7a4f7cd171c654226feb5a)

でキーの値を取得するこれは、Javaコードです:

try { 
     String content = "hello"; 
     String key = "57f4dad48e7a4f7cd171c654226feb5a"; 
     KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
     kgen.init(128, new SecureRandom(key.getBytes("utf-8"))); 
     SecretKey secretKey = kgen.generateKey(); 
     byte[] enCodeFormat = secretKey.getEncoded(); 


     SecretKeySpec key1 = new SecretKeySpec(enCodeFormat, "AES"); 

     Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 

     byte[] byteContent = content.getBytes("utf-8"); 


     cipher.init(Cipher.ENCRYPT_MODE, key1,new IvParameterSpec("1234567812345678".getBytes("UTF-8"))); 

     byte[] result = cipher.doFinal(byteContent); 
     System.out.println(new String(result).equals("QtzDsbCgmA9+XBVEsEm70w==")); 

    } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { 
     e.printStackTrace(); 
    } catch (BadPaddingException e) { 
     e.printStackTrace(); 
    } catch (IllegalBlockSizeException e) { 
     e.printStackTrace(); 
    } catch (InvalidKeyException e) { 
     e.printStackTrace(); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (InvalidAlgorithmParameterException e) { 
     e.printStackTrace(); 
    } 

出力結果はfalseです。結果をtrueに変更するには、Javaコードを修正します。

+1

うーん...あなたがそれらを比較する前にバイトをBase64エンコードされていませんか? –

+0

まあ... 'CryptoJS.enc.Utf8.parse(CryptoJS.MD5(" http://stackoverflow.com "))'は型の不一致です。なんでも起こる可能性がある。あなたは、CryptoJS.enc.Utf8.parse(CryptoJS.MD5( "http://stackoverflow.com").toString()) 'または単に' CryptoJS.MD5( "http://stackoverflow.com") ' 。どちらですか? –

答えて

0

@Luka公園のアドバイスによると、私は私のquestion.Thisに解決してきた私のソリューションです:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
    byte[] raw = sKey.getBytes(); 
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); 
    IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes()); 
    cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); 
    byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); 
    return new BASE64Encoder().encode(encrypted); 
関連する問題