OpenSSL, OpenSSL "rsautl" command is a utility to sign, verify, encrypt and decrypt data using RSA private key and public key. This "signing" can also be achieved with this command: openssl rsautl -sign -inkey path/to/private/key.pem \ -in file/to/encrypt -out encrypted/output From … OpenSSL is an open-source implementation of the SSL protocol. The -verify switch is a bit misleading, the command only outputs the decrypted hash. Later, the alias openssl-cmd(1) was introduced, which made it easier to group the openssl commands using the apropos(1) command or the shell's tab completion. With C code it is possible to ask to disregard lines breaks : BIO_set_flags(d,BIO_FLAGS_BASE64_NO_NL); $ cat encrypted.txt | base64 -d | openssl rsautl -verify -pubin -inkey public.key -in - proof that private key can encrypt and public key can decrypt As you can see, the decrypted file correctly matches the text we wrote into it in the encryption step. base64 uses PEM 80 characters per line . openssl base64 -d < blob | openssl rsautl -inkey ~/.pub.key -pubin In doing so, users verify that the private key was involved in the creation of the message, lending some authenticity to the data that has been transferred. The public key is not assumed to be secret, so this establishes data authenticity, not data privacy. echo " generate: mail friendly attachment. openssl rsautl expects a signature in binary format, not Base64-encoded. You … base64 encode content, if needed to mail the file " openssl base64 -e -in content.enc -out content.enc.b64: echo " encrypt: keyfile with public key of recipient " openssl rsautl -encrypt -pubin -inkey recipient-key.pub.pem -in keyfile -out keyfile.enc: echo " generate: mail friendly recipient only key " openssl enc -aes-256-cbc -salt -in myLargeFile.xml \ -out myLargeFile.xml.enc -pass file:./key.bin Encrypt the symmetric key so you can safely send it to the other person. openssl rsautl -encrypt -inkey public.pem -pubin -in key.bin … PKCS#1 v1.5 and PSS (PKCS#1 v2) are your best bets. You can use rsautl to "decrypt" the signature, getting access to the raw verification data:. When i do [rsautl] i get [PKCS1 padding error] base64 isn't *a* format, it's an encoding that can be and is used for many many formats. You should also check the signature scheme used. Base64 itself does not impose a line split, but openssl uses it in PEM context hence enforce that base64 content is splitted by lines with a maximum of 80 characters. There is a lot of OpenSSL commands which you could use for various operations. openssl rand -base64 32 > key.bin Encrypt the large file using the symmetric key. openssl rsautl -verify -inkey pubkey.pem -pubin -in sigfile_octet This will yield the signature's DER-encoded ASN.1 structure. OpenSSL is a powerful cryptography toolkit that can be used for encryption of files and messages. Here are options supported by the "rsautl" DESCRIPTION The rsautlcommand can be used to sign, verify, encrypt, and decrypt data using the RSA algorithm. >From: [hidden email] On Behalf Of Matt McPhee >Sent: Wednesday, 21 August, 2013 07:17 >I am new to OpenSSL and have a private RSA key and am trying to >read a encrypted message that looks to be in base64 format but >I'm not to sure. That's a sequence containing the algorithm identifier of the hash algorithm that was used, followed by the hash itself. OpenSSL's RSA_private_encrypt does the opposite: it encrypts (small) message with private key (akin to creating a signature from message hash). If you want to use the same password for both encryption of plaintext and decryption of ciphertext, then you have to use a method that is known as symmetric-key algorithm.