我正在尝试按照概述在 Expect 中进行加密在这个维基中在 Ubuntu 16.04 上。我已经安装了tcllib
root@alarmux:/home/abdmin# apt-get install tcllib
Reading package lists... Done
Building dependency tree
Reading state information... Done
tcllib is already the newest version (1.17-dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 77 not upgraded.
但是,当我运行脚本时,我得到:
couldn't execute "des": no such file or directory
while executing
"exec echo "$pd" | des -e -k $key -b > /home/abdmin/$filename"
(procedure "utility_encrypt" line 3)
invoked from within
"utility_encrypt pswd encrypted_Pass"
(file "./tclTest" line 22)
为什么命令无法des
执行?
答案1
该页面列出了多种解决方案,因此您只需使用其中一种或其他解决方案,具体取决于您想要执行的操作。
- 命令
des
代码依赖于一些名为des
.该命令不是 TCL 提供的,也不是tcllib
.它可能是一种古老的东西,曾经用于(旧的、糟糕的、不安全的)DES 或 3DES 加密。您需要找到该des
命令或使用兼容的命令。 tcllib
确实提供了des(n)
界面,但似乎没有记录在您链接的页面上。 DES 再次非常弱且非常古老。tcllib
确实提供了md5crypt(n)
您链接的页面上提到的界面。
像 PGP 或bcrypt
或 之类的东西scrypt
可能是比 DES 或 MD5 加密算法更好的选择,尽管不清楚您要解决什么问题......您是否需要 DES 来与古老的东西兼容?这些秘密到底是如何被使用的?
答案2
正如中提到的一条评论,如果您只想避免肩窥明文密码,您可以使用简单的编码。例如,这是 Perl 中的一个
# Generate encoding
echo secret123 | perl -e 'chomp($passwd=<>); chomp($encoded=pack("u",$passwd));print "$encoded\n"'
)<V5C<F5T,3(S
这里的编码密码secret123
是)<V5C<F5T,3(S
。
# Restore cleartext
echo ')<V5C<F5T,3(S' | perl -e 'chomp($encoded=<>); chomp($passwd=unpack("u",$encoded)); print "$passwd\n"'
secret123
答案3
tcllib
您可以获取Ubuntu 16.04 软件包的文件列表在packages.ubuntu.com 上/usr/bin/des
,它不包含您尝试运行的文件- 官方存储库中的任何其他包也不包含。我看到的唯一选择是下载软件并(清除tcllib
包后)自行编译它,如下所述:如何安装 .tar.gz(或 .tar.bz2)文件?