前提:
需要调用JavaAPI进行签名/验签、加密/解密,需要使用BouncyCastle 类库进行Java与C#之间的数据互通。
加密理解点:
1:java 私钥采用的是PKCS8 ;C# 私钥采用的是PKCS1 格式
2:RSA加密 公钥加密,私钥解密或者私钥加密和公钥解密【这点和签名sign不同,sign需要私钥签名】
3:如果 java RSA加密 最后生成16进制 C# 也需要统一。这点一般需要确认最后生成的为base64还是16进制数据。
额外补充:
1:私钥,公钥注意去除空格,换行等(.Replace("\r", "").Replace("\n", "").Replace("\\s", ""))
2:加密 最后生成的一般为 byte数组 ,但是由于java中byte的范围在 [-128,127] 但是 C#中byte的范围在 [0,255]
并且使用byte不好进行对比传输,所以我们在进行签名或者加密时一般转化为字符串或者16进制。
BouncyCastle类库下载:
https://download.youkuaiyun.com/download/u011791378/11236710
******************以下时加密解密(C#与Java互通)BouncyCastle *************************
/// <summary>
/// 私钥加密2
/// </summary>
/// <param name="content">加密内容</param>
/// <param name="PrivateKey">PKCS8私钥</param>
/// <returns></returns>
public string EncryptByPrivateKey2(string content, string PrivateKey)
{
RsaKeyParameters PrivateKeyParam = (RsaKeyParamet