2013-03-14 67 views
1

我有一个字段表名称。我想将名称数据加密存储到字段中。 该名称可以是128个字符。那么应该是什么类型的字段(例如:varchar(256)或文本)。输出大小mcrypt_encrypt

以下函数用于加密/解密。

<?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))); 
} 
+2

为什么不通过代码运行128个字符长度的字符串,显示输出的最大尺寸并相应地使字段长度? – 2013-03-14 05:24:27

+0

@HankyPankyㇱ我认为输入+键和输出之间会有一些关系。我担心实验不会给出准确的输出大小。 – 2013-03-14 05:28:39

+0

是的,我同意,但一旦密钥由程序员决定,它将保持不变,否则解密将不会工作,如果密钥不断变化 – 2013-03-14 05:29:54

回答

1

为什么不通过您的代码运行128字符长度的弦数,显示输出的最大尺寸,并提出相应的字段长度?使用此现有密钥,它每次都会返回172长度。

<?php 

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

    $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>"; 
} 

?>