加密-解密AES PHP-URL一次性使用

加密-解密AES PHP-URL一次性使用,php,url,encryption,Php,Url,Encryption,我设法用PHP语言用AES-CCM编写了一个加密和解密数据的代码。此代码检索数据,将其发送到服务器,并通过post URL将其添加到数据库。但是,如果有人可以访问URL并多次将其发送到服务器,则每次都会将数据添加到数据库中。 有没有简单的方法在添加数据后禁止此URL 编辑:我想我会在加密部分添加日期和时间。然后当我收到数据时,我会在+-1分钟内检查日期和时间。并检查我是否尚未收到此消息。 你觉得这个解决方案怎么样?!那么容易破解吗 这是我的代码(第一部分): $algo = 'aes-128-

我设法用PHP语言用AES-CCM编写了一个加密和解密数据的代码。此代码检索数据,将其发送到服务器,并通过post URL将其添加到数据库。但是,如果有人可以访问URL并多次将其发送到服务器,则每次都会将数据添加到数据库中。 有没有简单的方法在添加数据后禁止此URL

编辑:我想我会在加密部分添加日期和时间。然后当我收到数据时,我会在+-1分钟内检查日期和时间。并检查我是否尚未收到此消息。 你觉得这个解决方案怎么样?!那么容易破解吗

这是我的代码(第一部分):

$algo  = 'aes-128-ccm';
$iv    = random_bytes(openssl_cipher_iv_length($algo));
$key   = "cd9344040aa9f9217871d46ee871c59c"; 
$data = '00000000010-3b57af';
$ciphertext = openssl_encrypt(
    $data,
    $algo,
    $key,
    OPENSSL_RAW_DATA,
    $iv,
    $tag
);
$ciphertext = bin2hex($ciphertext);
$iv = bin2hex($iv);
$tag = bin2hex($tag);
echo'<a href="adddata1?data='.$ciphertext.'&tag='.$tag.'&iv='.$iv.'">"decrypte"</a>';
?>
$algo  = 'aes-128-ccm';
$key   = "cd9344040aa9f9217871d46ee871c59c"; 

$ciphertext = hex2bin($_GET['data']);
$iv = hex2bin($_GET['iv']);
$tag = hex2bin($_GET['tag']);

$decrypt = openssl_decrypt(
    $ciphertext,
    $algo,
    $key,
    OPENSSL_RAW_DATA,
    $iv,
    $tag
);
if (false === $decrypt) {
    throw new Exception(sprintf(
        "OpenSSL error: %s", openssl_error_string()
    ));
}