如何使用Perl编写的“三行版RSA算法”?

问题描述 投票:0回答:1

J. Hoffstein 等人的书 “数学密码学简介”。谈论用 Perl 实现 RSA 算法的三行实现,人们用它来抗议美国政府对密码学的审查:

为了抗议政府的政策,人们用一种名为 perl 的编程语言编写了 RSA 算法的三行版本,并将其印在 T 恤和汽水罐上,从而将这些产品制成弹药。原则上,在从纽约飞往欧洲的航班上穿着“启用 RSA”T 恤的人将面临巨额罚款和 10 年监禁。

我在网上查找了实际的 Perl 程序,并在这里找到了它:http://www.cypherspace.org/rsa/story.html

#!/bin/perl -s-- -export-a-crypto-system-sig -RSA-3-lines-PERL
$m=unpack(H.$w,$m."\0"x$w),$_=`echo "16do$w 2+4Oi0$d*-^1[d2%Sa
2/d0<X+d*La1=z\U$n%0]SX$k"[$m*]\EszlXx++p|dc`,s/^.|\W//g,print
pack('H*',$_)while read(STDIN,$m,($w=2*$d-1+length$n&~1)/2)

上面等价于下面:

#!/bin/perl -s --

$w = ( 2 * $d - 1 + length($n) ) & ~1;

while (read(STDIN, $m, $w/2)) {
   $m = unpack(H.$w, $m.("\0"x$w));
   $_ = `echo "16do$w 2+4Oi0$d*-^1[d2%Sa2/d0<X+d*La1=z\U$n%0]SX$k"[$m*]\EszlXx++p | dc`;
   s/^.|\W//g;
   print pack('H*', $_);
}

我的问题是:我如何使用这个程序来加密并随后解密一段数据?该程序是否也支持密钥生成,或者我是否需要已经拥有密钥?

perl encryption rsa obfuscation dc
1个回答
0
投票

我使用Docker实现了Perl程序,以便于测试。我的设置包括生成密钥和加密消息所需的一切。您可以在以下链接找到详细信息和 Docker 设置:https://github.com/yvan-allioux/RSA-in-3-lines-of-perl

1 创建密钥并使用我的 bash 脚本将它们转换为 Perl 脚本可接受的格式 2 在容器中运行脚本,这样就不必安装perl

© www.soinside.com 2019 - 2024. All rights reserved.