Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   генерация случайной строки на perl (https://forum.antichat.xyz/showthread.php?t=38290)

genom-- 18.04.2007 23:25

генерация случайной строки на perl
 
вообщем пишу одинскрипт надо случайно ненерить строку текста -типо пароль рамдомный можно статистической длины но вида Wq1Ys` ну вы поняли из мусора всякого -- чето ничего кроме как взять массив символов и из него рамдомно выдирать символы и слепливать их в голову не приходит

посоветуйте наверняка есть чтонить покрасивее

Digimortal 18.04.2007 23:44

так пойдет?
Код:

print rand_pass(16);

sub rand_pass
{
        my $len = shift;
        my $pass;
        for (1..$len) {$pass .= chr(rand(94)+33)}
        return $pass;
}


zl0y 18.04.2007 23:54

<?php
function randomkeys($length)
{
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
$key = $pattern{rand(0,35)};
for($i=1;$i<$length;$i++)
{
$key .= $pattern{rand(0,35)};
}
return $key;
}
?>

blackybr 19.04.2007 09:50

ф-ии
Цитата:

sub generatePassword {
$length = shift;
$possible = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRS TUVWXYZ';
while (length($pass) < $length) {
$pass .= substr($possible, (int(rand(length($possible)))), 1);
}
return $pass
}
или
Цитата:

sub randomPassword {
my $pass;
my $_rand;

my $password_length = $_[0];
if (!$password_length) {
$password_length = 10;
}

my @chars = split(" ",
"a b c d e f g h i j k l m n o
p q r s t u v w x y z - _ % # |
0 1 2 3 4 5 6 7 8 9");

srand;

for (my $i=0; $i <= $password_length ;$i++) {
$_rand = int(rand 41);
$pass .= $chars[$_rand];
}
return $pass;
}

Digimortal 19.04.2007 16:20

омг...
он же попросил красивое решение, а вы оба пишете то же самое, что он сам и придумал.. )

genom-- 19.04.2007 20:36

я сейчас прямо перед чтением ответов допер что через chr можно заделать -- а тут диджи даже и код готовый кинул спасиб =)

KSURi 20.04.2007 23:03

Код:

use Digest::MD5;my@chars=(97..122);$str.=chr$chars[int rand scalar@chars]for(1..16);$str=Digest::MD5::md5_hex($str)

flipper 26.12.2007 17:24

Код:

@chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) );
$password = join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]);


genom-- 26.12.2007 21:24

археолог


Время: 12:47