2016-12-06 2 views
-1

Ich bin neu in PHP, jetzt möchte ich nur Java XOR verschlüsseln/entschlüsseln Code in PHP, das für Transaktionen zwischen Server und Client verwendet wird. Unten ist die Java xor Code:Java Biginteger xor verschlüsseln/entschlüsseln für PHP

public static String encrypt(String password, String key) { 
    if (password == null) 
     return ""; 
    if (password.length() == 0) 
     return ""; 

    BigInteger bi_passwd = new BigInteger(password.getBytes()); 

    BigInteger bi_r0 = new BigInteger(key); 
    BigInteger bi_r1 = bi_r0.xor(bi_passwd); 

    return bi_r1.toString(16); 
} 

public static String decrypt(String encrypted, String key) { 
    if (encrypted == null) 
     return ""; 
    if (encrypted.length() == 0) 
     return ""; 

    BigInteger bi_confuse = new BigInteger(key); 

    try { 
     BigInteger bi_r1 = new BigInteger(encrypted, 16); 
     BigInteger bi_r0 = bi_r1.xor(bi_confuse); 

     return new String(bi_r0.toByteArray()); 
    } catch (Exception e) { 
     return ""; 
    } 
} 

Ich habe einige der Forschung getan und einige Informationen in http://phpseclib.sourceforge.net/documentation/math.html gefunden, aber es kann nicht die Arbeit. Meine PHP-Version auf dem Server ist 5.4.36. Muss ich etwas installieren oder eine Konfiguration vornehmen?

+0

Willkommen bei StackOverflow. Was ist das Problem mit dem Code? Funktioniert es nicht? Haben Sie Fehlermeldungen erhalten? Bitte sei so genau wie möglich, denn das wird zu besseren Antworten führen. –

+0

Ich entfernte "gelöst" aus dem Titel der Frage. Sie können entweder Ihre eigene Antwort posten oder die Frage löschen. Der Titel der Frage muss nicht geändert werden. –

Antwort

0

Holen Sie es funktioniert. Unten ist der PHP-Code

function encrypt($string, $key) 
{ 
    $bi_passwd = new Math_BigInteger($string, 256); 
    $bi_r0 = new Math_BigInteger($key); 
    $bi_r1 = $bi_r0->bitwise_xor($bi_passwd); 
    return $bi_r1->toHex(); 
} 

function decrypt($string, $key) 
{ 
    $bi_confuse = new Math_BigInteger($key); 
    $bi_r1 = new Math_BigInteger($string, 16); 
    $bi_r0 = $bi_r1->bitwise_xor($bi_confuse); 
    return $bi_r0->toBytes(); 
}