Exemple #1
0
function extra_l33t_entropy($match)
{
    if (!isset($match['l33t'])) {
        return 0;
    }
    $possibilities = 0;
    $sub = $match['sub'];
    foreach ($sub as $subbed => $unsubbed) {
        $S = 0;
        $U = 0;
        foreach (str_split($match['token']) as $chr) {
            if ($chr === (string) $subbed) {
                $S += 1;
            } elseif ($chr === $unsubbed) {
                $U += 1;
            }
        }
        $len = min($U, $S);
        for ($i = 0; $i <= $len; $i++) {
            $possibilities += binomial_coefficient($U + $S, $i);
        }
    }
    # corner: return 1 bit for single-letter subs,
    # like 4pple -> apple, instead of 0.
    $entropy = logarithm($possibilities);
    return $entropy ? $entropy : 1;
}
Exemple #2
0
<?php

$logs = array(2 => 103, 3 => 163, 5 => 239, 7 => 289, 11 => 356, 13 => 381, 17 => 421, 19 => 437.5);
for ($number = 1; $number <= 256; $number++) {
    echo $number;
    echo ' ';
    //var_dump(factorise($number));
    echo logarithm(factorise($number));
    echo '<br>';
}
function factorise($number)
{
    $factors = array();
    $root = floor(sqrt($number));
    for ($divisor = 1; $divisor <= $root; $divisor += 2) {
        $factor = $divisor == 1 ? 2 : $divisor;
        if ($number % $factor == 0) {
            $number = $number / $factor;
            $factors[] = $factor;
            $divisor = -1;
        }
    }
    if ($number > 1) {
        $factors[] = $number;
    }
    return $factors;
}
function logarithm($factors)
{
    global $logs;
    $sum = 0;