是否可以在php循环中使用aes加密

时间:2016-06-24 14:38:27

标签: php aes

我有php代码检查使用AES加密编码的电话号码的数据库。在某些情况下,代码会在数据库中看到它必须作用的4行(通过短信网关打电话)。是否可以使用AES脚本的迭代解密4个数字,或者我必须等待并使用每分钟一次的cron作业重新加载我的代码才能实现此目的。或者我应该调查构建一个单独的类来实现这一目标。目前我在尝试时遇到错误:无法重新声明AES。或者是否有特定的变量我可以在AES类中取消设置以实现解密的召回。这是关于此问题的一般建议请求,而不是代码。

Code Requested Edit:数据库查询行

$sms = $row['sms'];
$num = @mysqli_num_rows($rrv);
if($num>0){
while ($row = mysqli_fetch_array($rrv, MYSQLI_ASSOC)) {
$price = $row['price'];
$priceLive = $price;
if ($gt_lt == 'GT') {
if ($priceLive > $priceOrder) {
include '1.php';
$sms = $y1;

1.php的代码

<?php
include 'AES.php';//Code as at the AES website.
$aes = new AES($sms, '-----', 256);//Input Text, Input Key, Block Size
$y1=$aes->decrypt();//give back to $sms
?>

如果只需要一个号码,则一切正常。

1 个答案:

答案 0 :(得分:0)

有错误,因为你不能两次包含同一个类,并且你在循环中进行它。最好的解决方案是使用自动加载器。可行的解决方案比您的解决方案更好

include_once 'AES.php';

$sms = $row['sms'];
$num = @mysqli_num_rows($rrv);

if ($num > 0) {
    while ($row = mysqli_fetch_array($rrv, MYSQLI_ASSOC)) {
    $price = $row['price'];
    $priceLive = $price;

    if ($gt_lt == 'GT') {
        if ($priceLive > $priceOrder) {
           $aes = new AES($sms, '-----', 256);//Input Text, Input Key, Block Size
           $sms = $aes->decrypt();

我不知道您的AES类是如何定义的,但也许只能声明一次对象然后在相同的密钥中使用它(和IV取决于您的分组密码模式)。

更重要的是:

  • 根据PSR规则设置代码样式
  • 不要使用@运算符,只需检查$rrv是否为FALSE就可以检查是否有错误