I have received an assembly from a third party. I need to add it to the GAC, but it does not have a strong name. Is there any way for me to sign the assembly using my own key so
Yes. You can use ILDASM to disassemble the assembly into CIL code, and use ILAsm to reassemble that CIL code and sign it with your own key.
I've done this with various third-party assemblies, and it works just fine.
The post .NET-fu: Signing an Unsigned Assembly (Without Delay Signing) explains in detail how to do this.