Saya akhirnya menemukan cara mengubah kunci publik OpenSSH ke format PEM di blog dan berhasil mengenkripsi dan mendekripsi string menggunakan kunci privat / publik saya.
Saya telah menguraikan langkah-langkah yang saya gunakan untuk melakukan enkripsi dan dekripsi.
Untuk mengenkripsi string:
# convert public key to PEM format
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > ~/.ssh/id_rsa.pub.pem
# encrypt string using public key
echo "String to Encrypt" \
| openssl rsautl -pubin -inkey ~/.ssh/id_rsa.pub.pem -encrypt -pkcs \
| openssl enc -base64 \
> string.txt
Untuk mendekripsi string (dari file):
openssl enc -base64 -d -in string.txt \
| openssl rsautl -inkey ~/.ssh/id_rsa -decrypt
Karena tujuan saya adalah mengirim kata sandi melalui email, saya telah menulis sebuah skrip yang sangat mendasar untuk mengotomatisasi beberapa hal:
#!/bin/sh
if test "x${1}" == "x";then
echo "Usage: ${0} <username>"
exit 1
fi
SSHUSER=${1}
printf "Enter Password: "
read PASS1
echo ""
echo ""
ssh-keygen -f /home/${SSHUSER}/.ssh/id_rsa.pub -e -m PKCS8 \
> /tmp/ssh-pubkey-${SSHUSER}.pem
echo 'cat << EOF |openssl enc -base64 -d |openssl rsautl -inkey ~/.ssh/id_rsa -decrypt'
echo "New Password: ${PASS1}" \
| openssl rsautl -pubin -inkey /tmp/ssh-pubkey-${SSHUSER}.pem -encrypt -pkcs \
| openssl enc -base64
echo "EOF"
echo ""
rm -f /tmp/ssh-pubkey-${SSHUSER}.pem
Saya kemudian dapat mengirim output dari skrip dalam email untuk pengguna untuk mendekripsi.
Skrip lengkap tersedia di Github: https://gist.github.com/3078682
Secara umum, ya ini mungkin. Yang SHH lakukan hanyalah menghasilkan Modulus N dan dua kunci e (kunci publik) dan d (kunci pribadi). Mekanisme yang digunakan biasanya RSA atau DSA dan Kunci yang dihasilkan dapat digunakan untuk enkripsi. Yang harus Anda lakukan adalah mengekstraknya dari blok base64 yang merupakan kunci publik dan kemudian menggunakan program yang sesuai untuk mengenkripsi data dengan kunci-kunci ini. Anda mungkin tertarik pada Monkeysphere yang dapat mentransfer antara format kunci ssh dan kunci gnupg. Ini seharusnya memungkinkan Anda juga menggunakan kunci untuk enkripsi.
sumber
Biasanya seseorang tidak melakukan 'enkripsi massal' dengan kunci asimetris. Tapi itu tidak masalah karena Anda tidak boleh berurusan dengan tingkat detail seperti itu. Gunakan toolkit (openssl adalah http://www.openssl.org/docs/apps/openssl.html ) yang bagus untuk melakukan pekerjaan untuk Anda. Yang ingin Anda lakukan adalah membuat pesan terenkripsi yang berisi kata sandi sementara yang baru dan menentukan pasangan kunci pengguna sebagai penerima. Contoh berlimpah di halaman ini: http://www.openssl.org/docs/apps/smime.html
sumber