我有一個AES加密的問題,客戶向我展示了他們的「解密」PHP服務器代碼。奇怪的是,確切的代碼來自S.O. (不奇怪)。我發現這一點,因爲客戶通過我的代碼有完全相同的評論! :)我該如何將此PHP行移植到Java?
無論如何,這是從this S.O.取得的一段PHP代碼。題。
我試圖做與Java相同的,但我不知道這是什麼確切的行補充說:
$key = 'a16byteslongkey!';
$padded_key = $key . str_repeat(chr(0x00), 16); // Argh!
(!注意//哎呀評論是不是我的)
它是否試圖添加chr(0x00)來創建一個32字節的密鑰(因爲$ key是16?)如果是的話,我如何在Java中執行相同的操作?
@喬希也許我應該澄清:在PHP中做什麼是chr(0x00)? – 2012-03-21 17:32:55
在PHP中,字符串是二進制安全的(字符串中的每個「字符」實際上只是一個字節),但Java的String實例不是(它們實際上表示字符,而不是字節)。對於二進制加密密鑰,你可能不應該使用'String'對象,而應該使用'byte []'或類似'Key'類的東西。 – 2012-03-21 17:54:51
@AnotherCode的確,謝謝你的澄清。事實證明,客戶在服務器端做了一件「黑客行爲」的事情,用16個零填充了16個字節的密鑰,所以它增加了32個......在用16個「零」填充固定密鑰後,這一切都奏效了。 ;) – 2012-03-21 18:00:05