/// <summary> /// 解密接收到的加密数据并验证完整性,如果验证通过返回明文 /// </summary> /// <param name="data">接收到的加密数据</param> /// <returns>解密并验证成功后,返回明文</returns> public string DecryptAndVerifyData(string data) { data.CheckNotNullOrEmpty(nameof(data)); string[] separators = { Separator }; //0为DES密钥密文,1为 正文+摘要 的密文 var datas = data.Split(separators, StringSplitOptions.None); //用接收端私钥RSA解密获取DES密钥 var desKey = RsaHelper.Decrypt(Convert.FromBase64String(datas[0]), _ownPrivateKey); //DES解密获取 正文+摘要 的明文 data = new DesHelper(desKey).Decrypt(datas[1]); //0为正文明文,1为摘要 datas = data.Split(separators, StringSplitOptions.None); data = datas[0]; if (RsaHelper.VerifyData(data, datas[1], _hashType, _facePublicKey)) { return(data); } throw new CryptographicException("加密数据在进行解密时校验失败"); }