// byte[] = byte[] /// <summary> /// 压缩后DES加密 /// </summary> /// <param name="hexStringKey"></param> /// <param name="byteSource"></param> /// <returns></returns> public static byte[] ZipAndDelphiDes(string hexStringKey, byte[] byteSource) { string hexStringIV = StringEncode.ByteArrayToHexString(DefaultDesIV); byte[] zipResult = ZipCompress.Compress(byteSource); return(DelphiDesEncrypt(hexStringKey, hexStringIV, zipResult)); }
public void ZipCompressTest() { var test = @"hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello"; var sb = new StringBuilder(test); var stream = StreamHeandler.StringToStream(sb.ToString()); var zipStream = ZipCompress.Compress(stream); var unZipStream = ZipCompress.UnCompress(zipStream); var sb2 = StreamHeandler.StreamToString(stream); Assert.AreEqual(sb.ToString(), sb2); }
public void StreamHeandlerTest() { var text1 = @"hello who"; var stream = StreamHeandler.StringToStream(text1); var zipStream = ZipCompress.Compress(stream); var base64 = Base64Convert.ToBase64(zipStream); var txt1 = StreamHeandler.StreamToString(base64); var txt2 = txt1; var base642 = StreamHeandler.StringToStream(txt2); var unZipStream = Base64Convert.FrmBase64(base642); var steam2 = ZipCompress.UnCompress(unZipStream); var text2 = StreamHeandler.StreamToString(steam2); Assert.AreEqual(text1, text2); }
/// <summary> /// 发送数据 /// </summary> /// <param name="parameter"></param> /// <returns></returns> public DataResult PushData(DataParameter parameter) { LogHelper.Debug(GetType(), "准备发送数据", LogInfo.ObjectToMessage(parameter)); PHPRPC_Client client = new PHPRPC_Client("http://localhost:4631/PullData.aspx"); IPushDataService pushDataService = (IPushDataService)client.UseService(typeof(IPushDataService)); //var pushDataService = AppCtx.Resolve<IPushDataService>("PushService"); //初始化异常 if (pushDataService == null) { LogHelper.Warn(GetType(), "获取接口失败"); return(null); } var success = true; var result = new DataResult(); var beginDataInfo = new DataInfo(); var crchash = new CrcHash(); result.DataId = Guid.NewGuid().ToString(); result.Action = parameter.Action; result.CrcCode = parameter.CrcCode; result.DataString = parameter.DataString; var stream = StreamHeandler.StringToStream(parameter.DataString); var zipStream = ZipCompress.Compress(stream); var base64 = Base64Convert.ToBase64(zipStream); var sb = new StringBuilder(StreamHeandler.StreamToString(base64)); var count = (int)Math.Ceiling(sb.Length / (double)dataLength); result.SplitCount = count; #region 准备发送数据 beginDataInfo.ActionId = parameter.Action; beginDataInfo.DataId = result.DataId; beginDataInfo.SpliteCount = count; LogHelper.Debug(GetType(), "开始请求发送数据", LogInfo.ObjectToMessage(beginDataInfo)); pushDataService.Begin(beginDataInfo); #endregion #region 发送数据 LogHelper.Debug(GetType(), "开始发送数据"); for (int i = 0; i < count; i++) { var tcs = new TaskCompletionSource <bool>(); WaitCallback asyncWork = _ => { var beginPos = i * dataLength; var legth = i == count - 1 ? sb.Length - beginPos : dataLength; var data = sb.ToString(beginPos, legth); var dataSegment = new DataSegment(); dataSegment.DataId = result.DataId; dataSegment.Crccode = crchash.GetHashCode(StreamHeandler.StringToStream(data)); dataSegment.DataString = data; dataSegment.Index = i; LogHelper.Debug(GetType(), string.Format("发送数据,ID:{0},索引:{1}", result.DataId, i), LogInfo.ObjectToMessage(dataSegment)); pushDataService.Push(dataSegment); tcs.SetResult(true); }; ThreadPool.QueueUserWorkItem(asyncWork); var task = tcs.Task; var taskResult = task.Result; if (!taskResult) { success = false; break; } } #endregion #region 发送完成 var endResult = pushDataService.End(beginDataInfo.DataId, !success); LogHelper.Debug(GetType(), "发送数据完成"); if (endResult == null) { success = false; } #endregion return(result); }
// byte[] = byte[] /// <summary> /// Zip压缩后3DES加密,密钥长度必需是24字节 /// </summary> /// <param name="hexStringKey">密钥</param> /// <param name="source"></param> /// <returns></returns> public static byte[] ZipAnd3Des(string hexStringKey, byte[] source) { byte[] zipResult = ZipCompress.Compress(source); return(Cryptography.TripleDesEncrypt(hexStringKey, zipResult)); }