在废了好大的劲,终于搞清楚了,在不同的用户间使用RSA加解密时,如果使用machinekeystore,一定要加上下方红色的代码。
CspParameters csp = new CspParameters();
csp.KeyContainerName = "orderkey5";
csp.Flags = CspProviderFlags.UseMachineKeyStore;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
原因是CspParameters 的flag默认值是用户级的密钥容器。一旦发现指定的密钥容器名称不存在会自动创建一个用户级的密钥容器,导致使用的私钥和原来加密的公钥不是一对密钥。抛出异常。
CspParameters csp = new CspParameters();
csp.KeyContainerName = "orderkey5";
csp.Flags = CspProviderFlags.UseMachineKeyStore;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
原因是CspParameters 的flag默认值是用户级的密钥容器。一旦发现指定的密钥容器名称不存在会自动创建一个用户级的密钥容器,导致使用的私钥和原来加密的公钥不是一对密钥。抛出异常。