我在工作中被要求通过以下说明实现对简单Web服务的请求:
AES加密: 类型:ECB 大小:128位 填充模式:pkcs7 密钥:9B6018215942B2E1DA3797D3394779BF
在文档(只是一个给定的例子)中,他们说对于字符串:
2874838-49号
加密过程必须生成:
BEE361962A1802A7BAAD328DAE8B291
我一直在寻找类似的东西,但没有任何解决方案(比如 here , here here 等)给出的帮助我实现了给出的示例结果。
这是我现在做的最后一件事:
function aes128Encrypt($data, $key) { $padding = 32 - (strlen($data) % 32); $data .= str_repeat(chr($padding), $padding); return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB)); } $data = "2874838-49"; $key = "9b6018215942b2e1da3797d3394779bf"; echo aes128Encrypt($data, $key); // UdP7dXSTp6b5I986PLL8Gs3qH3rMj0SpQ0te4pP7M44=
编码算法返回编码数据的字节流。
您所拥有的示例不提供base64编码的数据变体,而是提供十六进制表示。
在你的情况下,换掉 base64_encode 对于 bin2hex 答案应该是一致的。
function aes128Encrypt($data, $key) { $padding = 32 - (strlen($data) % 32); $data .= str_repeat(chr($padding), $padding); return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB)); } $data = "2874838-49"; $key = "keyshouldbeplacedhere"; echo aes128Encrypt($data, $key);