对接其他语言接口的时候,最头疼的事情就是各式各样的加密方法,不同语言实现方式都不一样。收集下希望给同名人一个帮助:
PHP 7.2 //AES加密模式是ECB,填充是PKCS7,偏移量是0,输出Base64。 $encrypted = openssl_encrypt($json, 'AES-128-ECB', $secret, 0, ''); 注意:php 7+ $secret不能超过16位,超过16位也只取16位
可是 openssl 有缺陷:在openssl_encrypt中。key长度只能是16长度,>16长度后,签名结果保持不变。坑死哥了!
//HmacSHA1加密,之后进行Base64加密 //HmacSHA1 加密 $sign = hash_hmac("sha1", $str, $data['PrivateKey'], true); //获得是二进制 = C# byte[] //\Yii::error($sign,'getSignature->sign'); //Base64 加密 $sign = base64_encode($sign);