Ran*_*rtz 10 perl hash encryption-symmetric
好吧,我可能只是一个糟糕的星期一,但我有以下需要,我看到很多部分解决方案,但我确定我不是第一个需要这个的人,所以我想知道我是否我错过了显而易见的事.
$ client有50到500字节的二进制数据,必须插入到URL的中间并往返客户的浏览器.由于它是URL的一部分,因此我们反对GET URL的1K"理论"限制.此外,$ client不希望他们的客户解码数据,或在没有检测的情况下篡改数据.$ client也不希望在服务器端存储任何东西,所以这必须是完全独立的.在编码和解码中必须是Perl代码,并且速度快.
我认为最后一步可能是base64.但是最有意义的加密和散列步骤是什么?
我在Cat应用程序中有一些代码,用于Crypt::Util
编码/解码用户的电子邮件地址以获取电子邮件验证链接.
我Crypt::Util
使用Catalyst::Model::Adaptor
密钥设置模型.然后在我的控制器中,我在发送端有以下逻辑:
my $cu = $c->model('CryptUtil');
my $token = $cu->encode_string_uri_base64( $cu->encode_string( $user->email ) );
my $url = $c->uri_for( $self->action_for('verify'), $token );
Run Code Online (Sandbox Code Playgroud)
我发送此链接到$user->email
,当它被点击时,我使用以下.
my $cu = $c->model('CryptUtil');
if ( my $id = $cu->decode_string( $cu->decode_string_uri_base64($token) ) ) {
# handle valid link
} else {
# invalid link
}
Run Code Online (Sandbox Code Playgroud)
这基本上就是edanite
另一个答案中的建议.您只需要确保用于形成令牌的任何数据,并且最终$url
不超过您的任意限制.
归档时间: |
|
查看次数: |
1100 次 |
最近记录: |