http://www.kent-web.com/perl/crypt/step05.html
上記urlを参考に、以下のような methodを活用すれば、良い気がします
use Digest::MD5; sub get_csrf_token { my ($self) = @_; # 8文字のランダム文字列をsaltに使用します my @salt_chars = ('a' .. 'f', 0 .. 9); my $salt_str; for (1 .. 8) { $salt_str .= $salt_chars[int(rand(@salt_chars))]; } my $org_token = join('', $salt_str,$self->{user}->{id}); my $enc_token = Digest::MD5::md5_hex($org_token); my $csrf_token = join('',$salt_str, $enc_token); return $csrf_token; } sub chk_csrf_token { my ($self,$csrf_token) = @_; my $salt_str = substr($csrf_token,0,8); # 先頭にあるsalt値取得 my $org_token = join('', $salt_str,$self->{user}->{id}); my $enc_token = Digest::MD5::md5_hex($org_token); if( $csrf_token eq "$salt_str$enc_token" ){ return 1; } return; }