PHP AES密钥和iv格式

时间:2019-05-07 14:37:50

标签: php encryption arduino aes

如何在PHP中从Arduino库编写AES密钥和iv?

我发现this example如何在PHP中加密和解密字符串

$encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
$secret_iv = 'This is my secret iv';

我也发现了AES library for Arduino,但是它的密钥和iv(十六进制)格式不同

// AES Encryption Key
byte aes_key[] = { 0x15, 0x2B, 0x7E, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C };

// General initialization vector (you must use your own IV's in production for full security!!!)
byte aes_iv[N_BLOCK] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

如何在PHP中从Arduino代码正确编写key和iv?我的意思是我可以手动将十六进制格式转换为unicode字符串,还是可以通过PHP使用某些功能来实现?还是可能有一些更方便的方法/方法在Arduino和PHP之间传递加密消息?任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您想直接将其写下来,则可以对字符串使用十六进制转义符,例如

$secret_key = "\x15\x2B\x7E\x16\x28\xAE\xD2\xA6\xAB\xF7\x15\x88\x09\xCF\x4F\x3C"

请注意必需的双引号,这是识别\x转义符所必需的。

PHP字符串,就像许多语言中的字符串一样,在内部只是字节。这些字节的解释方式可能有所不同,但是如果将其用作字节数组,则没有关系。