/// <summary> /// 生成Des加密采用的Key和IV(两者都是八位) /// </summary> public static DesKeyIVEntity GenerateDesKeyIv() { var keys = new byte[8]; var ivs = new byte[8]; var rd = new Random(); rd.NextBytes(keys); rd.NextBytes(ivs); var keyIv = new DesKeyIVEntity { KeyBytes = keys, IVBytes = ivs }; return(keyIv); }
/// <summary> /// 采用RAS和DES一起进行解密操作,私钥解析出来Key/IV,然后用Key/Iv解密业务数据 /// </summary> /// <param name="xmlPrivateKey"></param> /// <param name="encryptResult"></param> /// <returns></returns> public static RSADESDecryptResult DecryptByRSADES(string xmlPrivateKey, RSADESEncryptResult encryptResult) { string[] encryptedKeyIv = EncryptUtility.DecryptByRSA(encryptResult.EncryptedDesKeyIV, Encoding.Unicode, xmlPrivateKey).Split('.'); var result = new RSADESDecryptResult(); result.DecryptedDesKey = encryptedKeyIv[0]; result.DecryptedDesIv = encryptedKeyIv[1]; var keyIv = new DesKeyIVEntity() { KeyString = result.DecryptedDesKey, IVString = result.DecryptedDesIv }; result.DecryptedSourceData = EncryptUtility.DecryptByDES(encryptResult.EncryptedSourceData, Encoding.Unicode, keyIv.KeyBytes, keyIv.IVBytes); return(result); }
/// <summary> /// 采用RAS和DES一起进行加密操作,公钥加密Key/IV,Key和IV来加密源数据,可以指定具体采用的Key / Iv /// </summary> /// <param name="xmlPublicKey"></param> /// <param name="srcDataToEncrypted"></param> /// <returns></returns> public static RSADESEncryptResult EncryptByRSADES(string xmlPublicKey, string srcDataToEncrypted, DesKeyIVEntity keyIv) { RSADESEncryptResult result = new RSADESEncryptResult(); //公钥加密Key result.EncryptedDesKeyIV = EncryptUtility.EncryptByRSA(string.Format("{0}.{1}", keyIv.KeyString, keyIv.IVString), Encoding.Unicode, xmlPublicKey); //Key和IV来加密源数据 result.EncryptedSourceData = EncryptUtility.EncryptByDES(srcDataToEncrypted, Encoding.Unicode, keyIv.KeyBytes, keyIv.IVBytes); return(result); }
/// <summary> /// 采用RAS和DES一起进行加密操作,公钥加密Key/IV,Key和IV来加密源数据 /// </summary> /// <param name="xmlPublicKey"></param> /// <param name="srcDataToEncrypted"></param> /// <returns></returns> public static RSADESEncryptResult EncryptByRSADES(string xmlPublicKey, string srcDataToEncrypted) { DesKeyIVEntity keyIv = EncryptUtility.GenerateDesKeyIv(); return(EncryptByRSADES(xmlPublicKey, srcDataToEncrypted, keyIv)); }