Dize numarasını kodlamak ve daha sonra çözmek için?

0 Cevap php

Ben şifrelemek için arıyorum / dizeleri içine sayılar (0, 1, 2, ...) kodlamak işlevleri şifresini öyle ki bu dizeleri rastgele bakacağız, daha sonra sayı olabilir geri dizeden çözer.

Örneğin: 3 ABFQWEMasdEE şifreli olacak ve 6 üzücü @ poad_Asd # şifreli olacak.

Ben karakterler orada görünebilir ayrıca şifreli dize karakter sayısını ve kontrol edebilecek, bu büyük olabilir!


UPDATE

Ben bu çözüm ile sonuna kadar:

<?php    

$key = 'secret_password';

for ($i = 100; $i < 110; $i++) {
    $text = "$i";
    $encrypted = encrypt($text, $key);
    $decrypted = decrypt($encrypted, $key);
    $decrypted = rtrim($decrypted, "\0");
    $ok = ($text === $decrypted);
    if (!$ok) {
        exit('********** BUG BUG BUG BUG BUG ***********');
    }
    echo '[' . $text . '] [' . $encrypted . '] [' . $decrypted . '] ' . ($ok ? 'OK' : 'BUG BUG BUG BUG BUG BUG BUG') . '<br />';
}
exit('***** OK ******');

function encrypt($data, $key) {     
    $td = mcrypt_module_open('cast-256', '', 'ecb', '');
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    mcrypt_generic_init($td, $key, $iv);
    $encrypted_data = mcrypt_generic($td, $data);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return base64_encode($encrypted_data);
}   

function decrypt($encoded_64, $key) {
    $td = mcrypt_module_open('cast-256', '', 'ecb', '');
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    mcrypt_generic_init($td, $key, $iv);
    $decrypted_data = mdecrypt_generic($td, base64_decode($encoded_64));
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $decrypted_data;
}  

?>

hangi aşağıdaki çıktıyı sağlamaktadır:

[100] [9UA0Maq3MGp0CzMOWcpOpg==] [100] OK
[101] [Y5WKH7J1+k0bFqsGw1jmrA==] [101] OK
[102] [NqV2opJc7CNq5O3lcuWKMw==] [102] OK
[103] [1FpJhHe+vrK6aKA54VR53Q==] [103] OK
[104] [MHQoYCqL4yCI9jKg1U0UYw==] [104] OK
[105] [6Qq9aXEn46xpDgv8CvnK7Q==] [105] OK
[106] [UGk1/byT7wpoFM59Uy/pdg==] [106] OK
[107] [39kyPA49zAZsCFx3pt6bYw==] [107] OK
[108] [YccDSimEf3C0NKDaVOf4kA==] [108] OK
[109] [PfmvLfVR4+gi9y9v/6efZQ==] [109] OK
OK *

Dizileri ve aynı boyutta Tüm (== sonunda haricinde) rastgele görünüyor. Çözüm mükemmel, ama yeterince iyi değil!

Hepinize teşekkür ederim!

0 Cevap