这两个参数是java后台传过来的,我要用C#把两这个字符生成公钥,然后不知道怎么处理
我在网上找了好多种方法,都不行,
返回的Exponent :010001;
Modulus:009ba8a71faa9d119cd8091ba572af86c1aebc5d5254b4309c3826a7aa2f1546a61fe7bd24027294008da154734c9fa0515c223a3fa3e757f71ee5b992c615f5595a27b190437c6e8020b94a83ab87ea1b9b6afcb5dc580638a369b68fd24f3fe27e451050f337347d750bc45dc6df58d66518edf011ea8194e67f87877c0edb7bweb前端他们用的security-new.js.
最终生成256位长度的加密:0e6de3b1c1e7f75e08795c8b50540b1dc0474047abf41180fcfa08fe7e5c77419e257eda777bfd3eeb3628f51e6784fb736d315aff4621dedbe3282fc72b5102d5ae52cadef6d5def2c18eeca424e8e1b207759f2bd94478f8d4cf7915c4fcf9afea29cbcb39d79e5d00c7d6a2b53470a80f82301b4fd4ee7400b1175d332d64麻烦路过的大佬,帮忙看下,弄两天了

解决方案 »

  1.   

    java和端用对照的这个https://blog.csdn.net/clj198606061111/article/details/9090407
      

  2.   

                string Exponent = "";
                string Modulus = "";
                //从你发的密钥来看,对方给的是2个字符表示一个byte的密钥格式。
                //先把密钥从字符串转换成对应的字节数组(byte[])
                //然后构造参数
                RSAParameters para = new RSAParameters()
                {
                    Exponent = getbyte(Exponent),
                    Modulus = getbyte(Modulus),
                };
                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.ImportParameters(para);
                //下面就可以用rsa对象进行签名或加密了private static byte[] getbyte(string str)
            {
                //转成byte[]            var length = str.Length;            byte[] data = new byte[length / 2];            for (int i = 0; i < length; i += 2)
                {
                    data[i / 2] = byte.Parse("" + str[i] + str[i + 1],
                         System.Globalization.NumberStyles.HexNumber);
                }            return data;
            }
      

  3.   

    需要加密的密码:abcde*545782
      

  4.   

    用rsa.Encrypt(Encoding.UTF8.GetBytes("abcde*545782"), false);  最后生成的加密怎么每次执行都不同呀
      

  5.   

    rsa加密本身就是每次都不同,验证加密结果最直接的办法就是去解密,能解密就是对的。
      

  6.   

    https://blog.csdn.net/starfd/article/details/51838589
    搜索RSAPublicKeyJava2DotNet,这两个值只能获取到公钥
      

  7.   

    为什么js 通过这两个值生成的密码  一直是固定的呀,不是很明白
    那说明JS端的RSA加密库写的不好,没有使用随机盐,而是固定盐。
      

  8.   

    为什么js 通过这两个值生成的密码  一直是固定的呀,不是很明白
    那说明JS端的RSA加密库写的不好,没有使用随机盐,而是固定盐。
    但是这个我用这种方式加密  我再传给java  他解不了密呀
      

  9.   

    对于RSA来说,填充方式+正确的公钥=正确的私钥可以解密。
    首先检查填充方式是否一致。
    接下来检查公钥,可以在加载了公钥之后,用rsa.ToXmlString(false),导出公钥,比较一下值。C#导出的公钥都是经过base64编码的字节数组,你用base64解一下码,字节数组的值应该和对方给的字符串的值一致。