网上看了好多东西,也有一些思路,但是依旧没有得到结果,因为openssl类库,与JAVA互通,和前台JS也互通,所以要用这个类库
Modulus="008baf14121377fc76eaf7794b8a8af17085628c3590df47e6534574efcfd81ef8635fcdc67d141c15f51649a89533df0db839331e30b8f8e4440ebf7ccbcc494f4ba18e9f492534b8aafc1b1057429ac851d3d9eb66e86fce1b04527c7b95a2431b07ea277cde2365876e2733325df04389a9d891c5d36b7bc752140db74cb69f";
PublicExponent = "010001";
利用上边的模数Modulus和加密指数Exponent得到RSA的公钥,利用公钥加密
你是想C#利用上面的公钥?也就是说把上面公钥转成C#需要的xml?
公钥加密,私钥解密,但是现在给了两个指数,这两个指数是得到公钥的,我需要知道如何用这两个指数得到公钥
@Hyaha: C#用的是xml,里面是base64编码的。你上面的就是hex格式,只要把上面hex格式转成byte数组,然后在base64编码就可以了。
public static byte[] Hex2Byte(string byteStr) { try { byteStr = byteStr.ToUpper().Replace(" ", ""); int len = byteStr.Length / 2; byte[] data = new byte[len]; for (int i = 0; i < len; i++) { data[i] = Convert.ToByte(byteStr.Substring(i * 2, 2), 16); } return data; } catch (Exception ex) { // SystemLog.ErrLog("bin2byte失败:" + ex.Message); return new byte[] { }; } }
用上面hex转byte[]可以然后再base64,可以得到
M:AIuvFBITd/x26vd5S4qK8XCFYow1kN9H5lNFdO/P2B74Y1/Nxn0UHBX1FkmolTPfDbg5Mx4wuPjkRA6/fMvMSU9LoY6fSSU0uKr8GxBXQprIUdPZ62bob84bBFJ8e5WiQxsH6id83iNlh24nMzJd8EOJqdiRxdNre8dSFA23TLaf
E:AQAB
然后再根据xml格式组成xml就是C#的公钥
@孤零落叶寒: 我去试下,但是用Security这个类库和JAVA不互通
@Hyaha: 你说的不互通是指什么?C#加密后java解不出来?
@孤零落叶寒: 我加你Q问你一下可以嘛,我一个朋友是太忙了,不好意思老问
@孤零落叶寒: 简单的说,你说的东西是Security这个类库提供的方法组合成的公钥,但是需要的是用openssl这个类库生成公钥
@孤零落叶寒: 我上边给出了来的是前台JS给的参数,我想用C#重写加密过程,Security这个类库加密之后的字符串长度是不对的,用openssl这个类库加密之后的字符串是正确的
@Hyaha: 894969361
后来解决了嘛