Tôi nghĩ Tôi biết cách tạo khóa RSA được mã hóa tùy chỉnh, nhưng làm cách nào tôi có thể đọc mã được mã hóa như ssh-keygen?Mở khóa riêng RSA từ Ruby
Tôi biết tôi có thể làm điều này:
OpenSSL::PKey::RSA.new(File.read('private_key'))
Nhưng sau đó OpenSSL hỏi tôi cho mật khẩu ... Làm thế nào tôi có thể vượt qua nó để OpenSSL như một tham số?
Và, làm thế nào tôi có thể tạo một cái tương thích với những cái được tạo bởi ssh-keygen?
tôi làm điều gì đó như thế này để tạo ra các phím mã hóa tin:
pass = '123456'
key = OpenSSL::PKey::RSA.new(1024)
key = "0000000000000000#{key.to_der}"
c = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
c.encrypt
c.key = Digest::SHA1.hexdigest(pass).unpack('a2' * 32).map {|x| x.hex}.pack('c' * 32)
c.iv = iv
encrypted_key = c.update(key)
encrypted_key << c.final
Ngoài ra, các phím được tạo ra bởi OpenSSL :: PKEY :: RSA.new (1024) (không mã hóa), không hoạt động khi tôi thử đăng nhập ít mật khẩu hơn (ví dụ, tôi sao chép khóa công khai vào máy chủ và sử dụng khóa riêng để đăng nhập).
Ngoài ra, khi tôi mở tệp ssh-keygen qua OpenSSL và sau đó kiểm tra nội dung của nó, nó dường như có các ký tự bổ sung ở đầu và cuối của khóa. Điều này có bình thường không?
Tôi không thực sự hiểu một số công cụ bảo mật này, nhưng tôi đang cố gắng tìm hiểu. Tôi đang làm gì sai?