//============================================================ // <T>根据键加密内容,获得加密后的内容。<T> // // @param key 键 // @param value 内容 // @return 加密后的内容 //============================================================ public static string Encode(string key, string value) { byte[] source = Encoding.ASCII.GetBytes(value); byte[] keys = RSha1.ComputeHashBytes(key); RByte.DataXorSet(source, 0, source.Length, keys); return(Convert.ToBase64String(source)); }
//============================================================ // <T>根据键解密内容,获得解密后的内容。<T> // // @param key 键 // @param value 内容 // @return 加密后的内容 //============================================================ public static string Decode(string key, string value) { byte[] source = Convert.FromBase64String(value); byte[] keys = RSha1.ComputeHashBytes(key); RByte.DataXorSet(source, keys); return(Encoding.ASCII.GetString(source)); }
/// <summary> /// Convert color to pretty string, either as bytes or float values. /// </summary> public string ToString(bool asByte) { if (asByte) { return(RByte.ToString() + "," + GByte.ToString() + "," + BByte.ToString() + "," + AByte.ToString()); } else { return(R.ToString() + "," + G.ToString() + "," + B.ToString() + "," + A.ToString()); } }
//============================================================ // <T>压缩字节数据。</T> // // @return 字节数据 //============================================================ public byte[] CompressBytes() { byte[] data = null; // Deflate压缩 string compressCd = _compressCd; switch (compressCd) { case ERsCompress.Deflate: using (FCompressFile file = new FCompressFile()) { file.Append(_memory, 0, _length); if (_blockSize > 0) { data = file.BlockCompress(_blockSize); } else { data = file.Compress(); } } break; case ERsCompress.Lzma: using (FLzmaFile file = new FLzmaFile()) { file.Append(_memory, 0, _length); if (_blockSize > 0) { data = file.BlockCompress(_blockSize); } else { data = file.Compress(); } } break; case ERsCompress.LzmaAlchemy: using (FLzmaFile file = new FLzmaFile()) { file.Append(_memory, 0, _length); if (_blockSize > 0) { data = file.BlockCompressNative(_blockSize); } else { data = file.CompressNative(); } } break; } // 检查大小,如果压缩后更大,则不压缩数据 if (data.Length > _length) { data = ToArray(); compressCd = ERsCompress.None; } // 计算效验码 _vertifyCode = RByte.ComputeHash32(data, 0, data.Length); // 写入文件 byte[] result = null; using (FByteStream stream = new FByteStream()) { // 写入信息 stream.WriteUint8((byte)ERsCompress.Parse(compressCd)); stream.WriteInt32(_length); stream.WriteInt32(_vertifyCode); stream.WriteInt32(_blockSize); // 写入数据 if ((ERsCompress.None != compressCd) && (_blockSize > 0)) { stream.WriteBytes(data, 0, data.Length); } else { stream.WriteInt32(1); stream.WriteInt32(data.Length); stream.WriteBytes(data, 0, data.Length); } result = stream.ToArray(); } return(result); }