Loads of problems here:
1) Base64 is not an encryption method - it's a translation method. Thinking of it (and referring to it) as "encryption" encourages a very, very false sense of security as it can be cracked by the average human in seconds. Base64 strings are very recognisable, and easy to reverse. Do not use it for encryption!
2) The apostrophe has nothing to do with the error message you show. The error message implies that the data is wrong, not that the apostrophe in the company name it the cause.
But...these two imply much worse: for an apostrophe to give you problems inserting data into SQL implies that you are concatenating strings to form an SQL command; something like this:
string sql = "INSERT INTO MyTable (CompanyName) VALUES ('" + txtCompName.Text + "')";
That's bad: very, very bad. It leaves your code wide open to SQL injection as well as causing apostrophes to give you problems, which is probably why you are trying to use Base64 to get round it and make it work. You must always use parameterized queries to access SQL, not string concatenation.
And the use of string concatenation probably explains why your Base64 data is the wrong length - you are now doing something like this:
byte[] myDataInBase64 = ...
...
string sql = "INSERT INTO MyTable (CompanyName) VALUES ('" + myDataInBase64 + "')";
And that won't work either, because the default ToString implementation for an array returns the name of the array datatype (such as "System.Byte[]") instead of anything related to it's content.
Again, the fix is to use parameterized queries at all times.