示例#1
0
function getPublicKey($tab = array(), $mod, $e, $block_limit)
{
    $length_tab = count($tab);
    $public_key = array();
    $key_inv_mod = inv_mod($e, $mod);
    $password_permut = array();
    // if (super_croissance_check($tab)) {
    for ($i = 0; $i < $length_tab; $i++) {
        $current_operation = $tab[$i] * $e;
        $modulo_operation = my_modulo($current_operation, $mod);
        array_push($public_key, $modulo_operation);
    }
    // ordonée sans changer la valeur de la clé
    natsort($public_key);
    // on fait un foreach pour trouver les valeurs de la clé
    foreach ($public_key as $key => $value) {
        array_push($password_permut, $key);
    }
    echo "\n                Alice garde precieusement le mot de passe : [ ";
    foreach ($password_permut as $index_pass) {
        echo $index_pass;
    }
    echo " ]\n";
    // on sort en modifiant les valeurs de l'index
    sort($public_key);
    echo "\n                Alice envoie une clé publique à Bernard : [ ";
    foreach ($public_key as $values_in_key) {
        echo $values_in_key, " ";
    }
    echo " ]\n";
    echo "\n                Et envoie la limite de block à Bernard : [ ", $block_limit, " ]\n";
    return [$public_key, $password_permut];
    // }
}
示例#2
0
function decrypt($tab = array(), $e, $mod, $mess = array(), $passKey, $bloc_limit)
{
    $new_key = array();
    $message_array = array();
    // calcul de l'inverse modulaire
    $inverse = inv_mod($e, $mod);
    $new_key = passwd($passKey, $tab);
    $message_array = decryptMess($mess, $mod, $inverse);
    decryptMessToBin($new_key, $message_array, $bloc_limit);
}