1

フィールド名を持つテーブルがあります。名前データを暗号化してフィールドに保存したい。名前は 128 文字です。次に、フィールドのタイプを指定します (例: varchar(256) または text)。

暗号化/復号化に使用している次の関数。

<?php

$salt ='whatever_you_want';

function simple_encrypt($text) {
    return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}

function simple_decrypt($text) {
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
4

1 に答える 1

1

コードで 128 文字の長さの文字列をいくつか実行し、出力の最大サイズを表示して、それに応じてフィールドの長さを調整してみませんか? この既存のキーを使用すると、172毎回長さが返されます。

<?php

function rand_string( $length ) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  

    $size = strlen( $chars );
    for( $i = 0; $i < $length; $i++ ) {
        $str .= $chars[ rand( 0, $size - 1 ) ];
    }

    return $str;
}


$salt ='whatever_you_want';

function simple_encrypt($text) {
    return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}

function simple_decrypt($text) {
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}



for($i=0;$i<100;$i++)
{
$word=rand_string(128);
$e=simple_encrypt($word);
echo strlen($e)."<br>";
}

?>
于 2013-03-14T05:28:34.933 に答える