在与其他公司进行数据对接的时候常常会用到加解密、签名问题,特别碰到不同语言的对接时,真的会碰到各种意想不到的问题,这里特别介绍非常常用的aes加解密方法,并进行了简单的封装,方便同行更加专注于业务开发
代码如下:
<?php
namespace aes;
class aes {
/**
*
* @param string $string 需要加密的字符串
* @param string $key 密钥
* @return string
*/ public static function encrypt($string, $key)
{
$key = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16);
// openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变
$data = openssl_encrypt($string, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
$data = base64_encode($data);
return $data;
}
/**
* @param string $string 需要解密的字符串
* @param string $key 密钥
* @return string
*/
public static function decrypt($string, $key)
{
$key = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16);
$encrypted = base64_decode($string);
return openssl_decrypt($encrypted, 'aes-128-ecb', $key, OPENSSL_RAW_DATA);
}
}