小编Dav*_*ell的帖子

Perl加密STDIN密码

我正在制作一个Perl模块,为第三方API提供OO接口.我希望在将用户密码传输到第三方API之前以加密格式捕获并存储用户密码.该模块仅用于在基于UNIX的系统上运行.

我已经生成了以下执行捕获功能的脚本 - 这是正确的,因为它只以加密格式存储密码变量?我担心密码可能在其他地方的内存中可用(例如在$ _下虽然$ _是undef).

NB.假设操作系统不会记录条目或在进程名称中包含密码,我使用的是STDIN而不是@ARGV.我正在使用替代正则表达式而不是chomp,因此输入不必存储在临时的非加密变量中.我还假设输入捕获软件仍然可以捕获用户的输入,这是不可能完全安全的.

提前致谢

use strict;
use warnings;
use Crypt::CBC;
use 5.14.0;

print 'Please enter your password: ';
system('tty -echo');
my $key = Crypt::CBC->random_bytes(56);
my $iv  = Crypt::CBC->random_bytes(8);
my $cipher = Crypt::CBC->new(-key    => $key,
                             -cipher => 'Blowfish',
                             -salt   => 1,
                             );
my $ciphertext = $cipher->encrypt(<STDIN> =~ s/\n$//r);
system('tty echo');
Run Code Online (Sandbox Code Playgroud)

unix linux security encryption perl

11
推荐指数
2
解决办法
723
查看次数

为什么XS subs使用const char*?

许多Perl XS代码const char *用作XS sub的返回值,但绝不仅仅char *.例如:

const char *
version(...)
    CODE:
        RETVAL = chromaprint_get_version();
    OUTPUT: RETVAL
Run Code Online (Sandbox Code Playgroud)

来自xs-fun的代码

有人可以解释为什么const是首选吗?在我的测试中,无论是否const使用,返回的标量都是可修改的.

perl xs

8
推荐指数
1
解决办法
140
查看次数

为什么我的CPAN分布不是由PAUSE索引的?

我已将我的stasis发行版上传到PAUSE,但它不在索引中.

我以为这是因为它没有包,所以我在v0.04中向stasis 脚本添加了一个包声明,如下所示:

#!/usr/bin/env perl
package stasis;
package main;
...
Run Code Online (Sandbox Code Playgroud)

但它仍然没有编入索引.

无论如何,这个分布索引不涉及创建样板模块文件?(例如,添加lib/stasis.pm到分发).

indexing perl cpan

6
推荐指数
1
解决办法
77
查看次数

标签 统计

perl ×3

cpan ×1

encryption ×1

indexing ×1

linux ×1

security ×1

unix ×1

xs ×1