一、加密与解密
1.openssl 调用RSA进行公钥加密私钥解密时调用PEM_read_bio_RSAPubKey()返回null
解决方案:检测PEM秘钥文件属于PKCS1还是PKCS8 对于不同秘钥格式调用不同方法进行读取
格式 | 秘钥头格式 | 对应公钥读取方法 |
---|
PKCS1 | “BEGIN RSA PUBLIC KEY” | PEM_read_bio_RSAPublicKey |
PKCS8 | “BEGIN PUBLIC KEY” | PEM_read_bio_RSA_PUBKEY |
二、跨语言接口调用
1.C#调用C++共享库bool值始终返回为true
解决方案:C# bool类型与C++ bool类型不同 可以用C++返回为int类型 c#用int类型接收解决
2.C#调用C++共享库函数接口崩溃,提示堆栈不平衡
解决方案:增加导入选项为 CallingConvention = CallingConvention.Cdecl 设置为C调用约定
如:[DllImport("vtKBPlugin.dll",CallingConvention = CallingConvention.Cdecl)]
3.C#调用C++共享库传入字符串后C++接收到的字符串长度不足
解决方案:增加导入选项为 CharSet = CharSet.Ansi 设置编码方式为Ansi
如:[DllImport("vtKBPlugin.dll", CharSet = CharSet.Ansi)]