説明したように、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やORなどがbcrypt
DESまたはMD5暗号化アルゴリズムよりも優れている可能性があります。古代の技術と互換性があるためにDESが必要ですか?scrypt
これらの秘密は正確にどのように使用されますか?
答え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)ファイルをインストールするには?