2012-01-17 80 views
0

看到凱撒密碼的Java getBytes()函數,我正在考慮將此功能克隆到PHP的可能性。PHP。按字節瀏覽字符串。

在Java函數是:

private static final SHIFT_LENGTH = 0x3; 

public static String encode(String str) 
{ 
    str = "teststring"; 

    byte[] bytes = str.getBytes("UTF8"); 

    for (int i=0; i < bytes.length; ++i) 
    { 
     bytes[i] = bytes[i] + SHIFT_LENGTH; 
    } 

    // Base-64 encode 
    return new BASE64Encoder().encode(bytes); 
} 

該函數應的字符串中添加三到每個字節,然後基64編碼它。我已經嘗試了一堆的變化在PHP中,如下所示:

function encode_php($str) 
{ 
    $str = utf8_encode("teststring"); 

    $new_str = ''; 

    for ($i = 0; $i < strlen($str); $i++) { 
     $new_str .= ord($str[$i])+3; 
    } 

    return base64_encode($new_str); 
} 

我顯然缺少編碼或如何處理單個字節在PHP方面的東西,但我不知道是什麼。我試過使用dechex()和bin2hex()來混淆編碼,但不能得到匹配的結果。有任何想法嗎?

回答

1

不要你的意思$new_str .= chr((ord($str[$i])+3)%256);

+0

+1:我打賭的'$ new_str'輸出的ASCII數字串。 ;-) – Herbert 2012-01-17 10:11:36

+0

哦,呃。是。謝謝! – NChase 2012-01-17 19:56:45