【堅牢】トリップの新方式を考えてみませんか【互換性】

このエントリーをはてなブックマークに追加
309 ◆cZfSunOs.U
生キー指定以外の12桁以上「##〜」形式も将来の拡張用にしておきましょう.
で,まとめ:

    if (length $handle_pass >= 12)
    {
        my $mark = substr($handle_pass, 0, 1);
        if ($mark eq '#' || $mark eq '$')
        {
            if ($handle_pass =~ m|^#([[:xdigit:]]{16})([./0-9A-Za-z]{0,2})$|)
            {
                $GB->{TRIPSTRING} = substr(crypt(pack('H*', $1), "$2.."), -10);
            }
            else
            {
                # 将来の拡張用
                $GB->{TRIPSTRING} = '???';
            }
        }
        else
        {
            use Digest::SHA1 qw(sha1_base64);
            $GB->{TRIPSTRING} = substr(sha1_base64($handle_pass), 0, 12);
            $GB->{TRIPSTRING} =~ tr/+/./;
        }
    }
    else
    {
        # 従来形式
    }

・ 従来はトリップキーも含め <> や NG ワード等の置換処理が行われていたが,それをスルーするようにした.
・ キーの長さが 1024 桁を超えるとエラー.