我正在尝试将python函数移植到Common Lisp中:
HEX(HMAC_SHA256(apiSecret, 'stupidstupid'))
我该如何使用Ironclad来解决这个问题呢?
我最接近的例子是:
(ironclad:make-hmac apiSecret :sha256)
但它不起作用;它说apiSecret
The value "V0mn1LLQIc6GNSiBpDfDmRo3Ji8leBZWqMIolNBsnaklScgI"
is not of type
(SIMPLE-ARRAY (UNSIGNED-BYTE 8) (*)).
我正在考虑使用Data::UUID Perl模块来生成一个256位的对称密钥,用于HMAC_SHA256算法。每次调用都应该给我一个唯一的128位字符串,所以我想做一些类似以下的事情:
use Data::UUID;
my $ug = new Data::UUID;
my $uuid1 = $ug->to_hexstring($ug->create());
my $uuid2 = $ug->to_hexstring($ug->create());
my $256_bit_key = $uuid1 . $uuid2;
这个密钥是强加密的吗?
好的,所以,我花了几天的时间查看这里和其他地方的代码,我只是一直在拼接各个部分。这个脚本对我来说是有效的,我仍然在检查安全漏洞,但是我已经尽力去创建它。我不是perl天才,对regexp有点生疏。
此脚本的目的将用作聊天室用途的嵌入式密钥,我很可能会使用原始加密来分支第二个密钥,因此在有人开始拆分生成的打印页面层的情况下,额外的步骤和混淆。我不希望在数据库中存储与嵌入的密钥相同的用于登录的密钥,但由于显而易见的原因,它们需要相同的根路径。我可能在太多的地方清除了过多的字符,但我想为什么不呢,以防我把它作为一个单独的文件。
use Digest::SHA qw(hmac_sha256_hex);
我使用令牌在我的应用程序中实现身份验证。
生成令牌时,将实际的令牌发送到客户端,以便存储在cookie中,而哈希令牌与哈希过程中使用的salt一起保存在数据库中。
现在,要对用户进行身份验证,我必须将给定的令牌与保存在数据库中的令牌进行比较,这似乎需要检查数据库中的每个条目,因为salt对于每个令牌都是唯一的。
重申一下,我要做的事情是:
for saved_token in all_saved_tokens:
hashed_token = hash_token_with_salt(actual_hash_from_client, saved_token.salt)
if hash