As mentioned in the comments what the receiver needs to know is effectively:
Formats, Algorithms and Keys.
Now this may be a bit of an unsatisfying answer to most people, so I'll go into more detail.
The sender and the receiver have to agree on a format on how to actually read the data and how to interpret it. If I give anyone a chunk of Word document data without any format specification he will have a really hard time figuring out what field means what. So in your scenario you have to think of some specification on how to transmit your files, this may be as simple as the following, but must be done in order to ensure compatibility.
Example: RSA encrypted file
Offset | Size | Type | Name |Description
0 | 4 | bytes| Magic| A constant magic value to identify this packet
4 | 4 | bytes| Ver | A little-endian (LE) 32-bit integer denoting the format's version
68 | 64 | bytes| Cert | A SHA-512 hash of the certificate used to encrypt the key
72 | 4 | int | KeyLe| A LE 4-byte integer holding the size of the ciphertext
76 | 8 | int | Size | Size of the actual encrypted data
84 | 12 | byte | Nonce| A random nonce used for GCM
96 | KeyLe| int | KEM | An encrypted random number
96+KeyLe | Size | byte | Data | The encrypted file
96+KeyLe+Size | 16 | byte | Tag | The GCM tag on the data
So far for the format, now for the
Only knowing how to read in the data doesn't help you alot. You also need to know how to interpret it. This is where the algorithms come into play. For the above example you need to know that f.ex. Header Version 1 would be to use AES-256-GCM to encrypt the data using the nonce and outputting / verifying the appended tag along with authenticating the header as associated data (AD). Furthermore you'd have to know that this version requires you to use HKDF (salt=empty, no additional info) to derive the key from the RSA decryption of the
Key value using the certificate with the hash matching the
Cert entry. You'd also need to know that you select a key by randomly choosing a number smaller than the RSA modulus and by encrypting this number with RSA (=
Key) and using the HKDF of the secret integer as the AES key.
The keys aren't all that interesting at this point. You'd need to somehow trust the authenticity of the public key (using certificates?). But that's basically it with key management with this example. Of course you also have to consider things like key revocation, key expiration and key erasure but those are different problems...
To finally answer your first question whether the programming language matters. It doesn't if both systems use the same Formats, Algorithms and the right keys, because you wouldn't be able to distinguish the results of a C# from a Python from a C++ implementation then.