如何将此PHP行移植到Java?

时间:2012-03-21 17:28:28

标签: java php encryption aes

我遇到AES加密问题,客户向我展示了他们的PHP服务器代码,用于"解密"。奇怪的是,确切的代码来自S.O. (不奇怪)。我发现了这一点,因为客户传递给我的代码有完全相同的评论! :)

无论如何,它是一段取自this S.O.的PHP代码。问题

我正在尝试用Java做同样的事情,但我不知道这条线路的添加内容是什么:

$key = 'a16byteslongkey!';

$padded_key = $key . str_repeat(chr(0x00), 16); // Argh!

(注意// Argh!评论不是我的;)

是否尝试添加chr(0x00)来生成32字节密钥(因为$ key是16?)如果是这样,我将如何在Java中执行相同操作?

2 个答案:

答案 0 :(得分:2)

正如Gareth所说,这将返回ASCII码为0的字符。使用这个我们可以创建一个重复字符串的函数:

public static String strRepeat(String toRepeat, int reps){
    //Sanity checks go here!
    StringBuilder sb = new StringBuilder();
    for(int x = 0; x < reps; x++){
        sb.append(toRepeat);
    }
    return sb.toString();
}

现在该行可以替换为:

String paddedKey = key + strRepeat('\0', 16); // Argh!

答案 1 :(得分:1)

chr(0x00)应该返回带有ASCII代码0的字符,我认为它可以用Java中的'\0'表示。