Authentication




Cancel OK
B!コメントする  2012-11-05 18:22:00 by old

あくまでPHPで可逆暗号化

以前におれおれ関数で可逆暗号化を公開したことあったけど(http://zeijaku.net/bloghistory/?search=201111281403)、当然のことながらコードを解析すれば元には戻せる。
ついでに言うと特定の条件だと暗号化後の末尾が特定文字に偏ったりすることがあったりした。
とは言ってもぱっと見で分からないのと、強度を上げればいいやと思ってとりあえずいいか~と放置してたけどやっぱりちょっと気になったので少し手を加えてみた。

暗号化Ver1.1

/*
* *************************************
* CRYPT ENCODE Method Ver.1.1
* *************************************
* [機能]
* 文字列を暗号化する
* [引数]
* @param string $val 暗号化したい文字列
* [返り値]
* @return string $crypt
target 暗号化した文字列
/
function encode($val)
{
$crypttarget = '';

$CRYPT
STRENGTH = '2'; // 暗号強度
$CRYPTKEY = crypt($CRYPTSTRENGTH);

$assenble = strlen($val);
for($i = 0; $i < $assenble; $i++)
{
$crypttargetarray[$i] = substr($val, $i, 1);
$keyarray[$i] = substr(crypt($CRYPTKEY), mtrand("1", strlen(crypt($CRYPTKEY)) - 1), 1);
$crypttarget .= $keyarray[$i] . $crypttargetarray[$i];
}
$length = intval($CRYPTSTRENGTH);
for($j = 0; $j < $length; $j++)
{
$crypt
target = base64encode($crypttarget);
}
$crypttarget = bin2hex($crypttarget);
return $crypt_target;
}


復号化Ver1.1
/
* *************************************
* CRYPT DECODE Method Ver1.1
* *************************************
* [機能]
* 文字列を復号化する
* [引数]
* @param string $val 復号化したい文字列
* [返り値]
* @return string $decrypttarget 復号化した文字列
*/
function decode($val)
{
$decrypt
target = '';

$CRYPTSTRENGTH = '2'; // 復号強度
$val = pack("H*", $val);

$length = intval($CRYPT
STRENGTH);
for($i = 0; $i < $length; $i++)
{
$val = base64decode($val);
}

$assenble = strlen($val);
for($j = 0; $j < $assenble; $j++)
{
if( ($j % 2) != 0 )
{
$decrypt
target .= substr($val, $j, 1);
}
}
return $decrypt_target;
}


暗号と復号の強度は同じである必要があります。

大した違いは無いんだけど暗号化というか難読化には成功。
しかし、これ暗号化後の文字列の長さが半端じゃないくらい長くなってしまって使い物になんない気がしないでもない。
というかしょうもないことに時間を割いてしまってなんだかブルーな気分。
何というか余計な手をかけてしまったがためにさらに残念な結果を吐き出すものを作ってしまった気がする。



PHP  

  • コメント
  • コメントはまだありません