代码之家  ›  专栏  ›  技术社区  ›  Justin

PHP+AES安全问题

  •  0
  • Justin  · 技术社区  · 15 年前

    为了安全起见,我一直在我的网站上实现AES,我遇到了一个小故障/问题,我找不到答案,我觉得很奇怪。

    我相信我知道它在哪里,但我不知道如何/在哪里进行修复。 目前,我有php5和最新的MySQL在我的本地服务器上运行。

    这里有一个小测试,我正在运行,似乎工作得很好。

    <?php
    
    $fName = "Giesbrecht";
    
    $fNameEncrypt = common::encryptMe($fName);
    echo $fNameEncrypt ."<br />";
    echo common::decryptMe($fNameEncrypt);
    
    ?>
    

    我的函数用于实际使用共同点:我()

    public static function encryptMe ($value)
    // USE THE AES ENCRYPTION TO ENCRYPT ANY VALUE
    {
       include_once('../resources/crypt/AES.php');
    
       $aes = new Crypt_AES();
       $aes->setKey(AES_KEY);
       return $aes->encrypt($value);
    }
    

    因此,当我将值插入MySQL服务器时,问题似乎就出现了。所以我想这可能是我的角色集,设置为拉丁1,现在我已经转移到 utf8—UTF-8 Unicode

    有关MySQL设置的其他因素: 我尝试使用字段类型,例如: varchar、varbinary(我当前所在的位置)和长度为256的文本。我的表中确实有许多列字段,其中许多字段需要加密,尽管我只是用2进行测试,直到我弄清楚了所有内容。

    所以我遇到的问题是,当我插入到数据库中,我实际上看到了数据库中的值,我有字符值,它们相等意向书:0(虽然我确信这里的trans-coding会修改它)我在这里插入了数据库中实际值的屏幕截图: alt text

    但是当我试图解密这个值时,我什么也得不到,结果它是空的。似乎任何以大写“G”开头的词都有问题。如果我有一个小写的“g”,它似乎工作得很好。。。

    任何帮助都将不胜感激。 另外,我还想知道使用PHP-AES\u加密是更好还是使用MySQL-AES\u加密更好?

    谢谢。

    我现在添加了一段新的工作代码,它基于使用base64的响应。。。 如果这个结构有什么问题,请通知我。

    <?php
    
    $connect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    mysql_select_db(DB_NAME, $connect);
    
    $fName = "Giesbrecht";
    
    $encode = common::cleanUp($fName);
    $encode = common::encryptMe($encode);
    $encode = base64_encode($encode);
    
    mysql_query("INSERT INTO contacts (userId, firstName, lastName) VALUES ('15', 'Justin', '".$encode."')") or die(mysql_error());
    
    $results = mysql_query("SELECT * FROM contacts WHERE userId = '15'") 
    or die(mysql_error());
    
    while ($row = mysql_fetch_array($results)) 
    {
        echo "<br />FN: ". $row['firstName'];
        echo "<br />LNE: ". $row['lastName'];   
        echo "<br />LN: ". common::decryptMe(base64_decode($row['lastName']));  
    }
    
    ?>
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   symcbean    15 年前

    据我所知,PHP中没有AES加密函数(有第三方实现,mcrypt有一个/通常随PHP提供)。

    大多数实现都会为加密字符串返回二进制值(在插入/检索之前尝试base64编码/解码)。

    HTH公司

    C。

    推荐文章