2016-11-22 3 views
0

私はこのPHP暗号化スクリプトを作成しました。今、私はこれがJavaでどのようにできるのだろうと思っていました。私はこれを与えることを検討していた、それは両方の言語で使用できるようにJavascriptでそれをコーディングしていた。残念ながら、これは私が望むものではありません。 Javaでどうすればいいですか?Javaと同じPHP暗号化メソッドを使用

<?php 
    $encrypted = encrypt("Hello goodbye", "Pizza"); 
    $decrypted = decrypt($encrypted, "Pizza"); 

    echo $encrypted; 
    echo "<br/>"; 
    echo $decrypted; 

    function encrypt($string, $key) { 
    $result = ''; 
    for($i=0; $i<strlen($string); $i++) { 
     $char = substr($string, $i, 1); 
     $keychar = substr($key, ($i % strlen($key))-1, 1); 
     $char = chr(ord($char)+ord($keychar)); 
     $result.=$char; 
    } 

    return base64_encode($result); 
    } 

    function decrypt($string, $key) { 
    $result = ''; 
    $string = base64_decode($string); 

    for($i=0; $i<strlen($string); $i++) { 
     $char = substr($string, $i, 1); 
     $keychar = substr($key, ($i % strlen($key))-1, 1); 
     $char = chr(ord($char)-ord($keychar)); 
     $result.=$char; 
    } 

    return $result; 
    } 
?> 

私は(それは素晴らしいことだ)私のためにいくつかのコードを書くために求めていないのですが、私は助けになりたいか、右方向

EDITプッシュになるだろう: 私は投稿してJavaを介してPHPファイルにアクセスしたくないです。

+1

それが助け場合は、これをチェックすることができますhttps://docs.oracle.com/javase/8/docs/api/java/util/Base64.html – grsdev7

+0

この暗号化されていなくても、Javaでいくつかのスクランブリングを実装するだけです。これはコードサービスではないので、Javaコードを投稿してください。 –

+0

@MargaretBloom私はJavaコードを持っていません。どうすればいいか分かりません。 – Jason

答えて

1
import java.security.Key; 

import javax.crypto.Cipher; 
import javax.crypto.spec.SecretKeySpec; 

import sun.misc.BASE64Decoder; 
import sun.misc.BASE64Encoder; 

public class AdvanceEncryptionSecurity { 

    private static final String ALGORITHM = "AES"; 
    private static final int ITERATIONS = 2; 
    private static final byte[] keyValue = new byte[] { 'P', 'R', 'S', 'a', 'n', 'd', 'A', 'P', 'F', 'A', 'A', 'l', 'l', 'i', 'e', 'd' }; 
    private static String salt = "prs and pfa"; 

    public static String encrypt(String value) throws Exception { 
     Key key = generateKey(); 
     Cipher c = Cipher.getInstance(ALGORITHM); 
     c.init(Cipher.ENCRYPT_MODE, key); 

     String valueToEnc = null; 
     String eValue = value; 
     for (int i = 0; i < ITERATIONS; i++) { 
      valueToEnc = salt + eValue; 
      byte[] encValue = c.doFinal(valueToEnc.getBytes()); 
      eValue = new BASE64Encoder().encode(encValue); 
     } 
     return eValue; 
    } 

    public static String decrypt(String value) throws Exception { 
     Key key = generateKey(); 
     Cipher c = Cipher.getInstance(ALGORITHM); 
     c.init(Cipher.DECRYPT_MODE, key); 

     String dValue = null; 
     String valueToDecrypt = value; 
     for (int i = 0; i < ITERATIONS; i++) { 
      byte[] decordedValue = new BASE64Decoder().decodeBuffer(valueToDecrypt); 
      byte[] decValue = c.doFinal(decordedValue); 
      dValue = new String(decValue).substring(salt.length()); 
      valueToDecrypt = dValue; 
     } 
     return dValue; 
    } 

    private static Key generateKey() throws Exception { 
     Key key = new SecretKeySpec(keyValue, ALGORITHM); 
     return key; 
    } 
} 

このコードを試してみてください。それはencryptdecryptです。私はあなたがjavaでコーディングする方法を知っていると仮定しています。

+0

私はandroid javaで使用していますので、sun.misc.BASE64Decoderエンコーダ – Jason

+0

私はインポートエラーを解決しました。自分自身やそのようなものを提供するにはどうすればよいですか?私がPHPで暗号化しているときと同じ暗号化されたフレーズを受け取っていないからです。 – Jason

+0

私たちは異なるアルゴリズムを持っているので、同じ暗号化フレーズを持っていません。 – msagala25

関連する問題