我遇到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中执行相同操作?
答案 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'
表示。