2013-03-14 69 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>"; 
} 

?>