root/lang/perl/tiarra/main/Crypt.pm @ 3004

Revision 3004, 1.1 kB (checked in by topia, 5 years ago)

lang/perl/tiarra: import.

  • Property svn:mime-type set to text/x-perl; charset=EUC-JP
  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id URL Date Rev Author
Line 
1# -----------------------------------------------------------------------------
2# $Id$
3# -----------------------------------------------------------------------------
4# 与えられた、またはランダムに決定されたsaltを用いて文字列をcryptする機能、
5# そして文字列をcryptして得られた文字列を、予めcryptされた文字列と
6# 比較する機能を持つ。
7# -----------------------------------------------------------------------------
8package Crypt;
9use strict;
10use warnings;
11
12use SelfLoader;
131;
14__DATA__
15
16sub encrypt {
17    # saltは省略可能。省略されるとランダムに作られる。
18    my ($str,$salt) = @_;
19    $salt = gen_salt() unless defined $salt;
20
21    return crypt($str,$salt);
22}
23
24sub check {
25    # encryptedのsaltでrawをcrypt()してみて、一致したかどうかを真偽値で返す。
26    my ($raw,$encrypted) = @_;
27
28    return crypt($raw,substr($encrypted,0,2)) eq $encrypted;
29}
30
31sub gen_salt {
32    my $salt = '';
33   
34    srand;
35    for (0 .. 1) {
36        my $n = int(rand(63));
37        if ($n < 12) {
38            $salt .= chr($n + 46); # ./0-9
39        }
40        elsif ($n < 38) {
41            $salt .= chr($n + 65 - 12); # A-Z
42        }
43        elsif ($n < 64) {
44            $salt .= chr($n + 97 - 38); # a-z
45        }
46    }
47    $salt;
48}
49
501
Note: See TracBrowser for help on using the browser.