{
public static class Crypter
{
private static string FDefaultPassword = typeof(Crypter).FullName; public static string DefaultPassword
{
set
{
Crypter.FDefaultPassword = value;
}
} public static Stream Encrypt(Stream dest, string password)
{
ICryptoTransform transform = null;
using (PasswordDeriveBytes passwordDeriveBytes = new PasswordDeriveBytes(password, Encoding.UTF8.GetBytes("Salt")))
{
transform = new RijndaelManaged
{
Padding = PaddingMode.ISO10126
}.CreateEncryptor(passwordDeriveBytes.GetBytes(), passwordDeriveBytes.GetBytes());
}
dest.Write(new byte[]
{
,
, }, , );
return new CryptoStream(dest, transform, CryptoStreamMode.Write);
} public static Stream Decrypt(Stream source, string password)
{
ICryptoTransform transform = null;
using (PasswordDeriveBytes passwordDeriveBytes = new PasswordDeriveBytes(password, Encoding.UTF8.GetBytes("Salt")))
{
transform = new RijndaelManaged
{
Padding = PaddingMode.ISO10126
}.CreateDecryptor(passwordDeriveBytes.GetBytes(), passwordDeriveBytes.GetBytes());
}
int arg_5C_0 = source.ReadByte();
int num = source.ReadByte();
int num2 = source.ReadByte();
if (arg_5C_0 == && num == && num2 == )
{
return new CryptoStream(source, transform, CryptoStreamMode.Read);
}
source.Position -= 3L;
return null;
} public static bool IsStreamEncrypted(Stream stream)
{
int arg_25_0 = stream.ReadByte();
int num = stream.ReadByte();
int num2 = stream.ReadByte();
stream.Position -= 3L;
return arg_25_0 == && num == && num2 == ;
} public static string EncryptString(string data)
{
return Crypter.EncryptString(data, Crypter.FDefaultPassword);
} public static string EncryptString(string data, string password)
{
if (string.IsNullOrEmpty(data) || string.IsNullOrEmpty(password))
{
return data;
}
string result;
using (MemoryStream memoryStream = new MemoryStream())
{
using (Stream stream = Crypter.Encrypt(memoryStream, password))
{
byte[] bytes = Encoding.UTF8.GetBytes(data);
stream.Write(bytes, , bytes.Length);
}
result = "rij" + Convert.ToBase64String(memoryStream.ToArray());
}
return result;
} public static string DecryptString(string data)
{
return Crypter.DecryptString(data, Crypter.FDefaultPassword);
} public static string DecryptString(string data, string password)
{
if (string.IsNullOrEmpty(data) || string.IsNullOrEmpty(password) || !data.StartsWith("rij"))
{
return data;
}
data = data.Substring();
string @string;
using (Stream stream = Converter.FromString(typeof(Stream), data) as Stream)
{
using (Stream stream2 = Crypter.Decrypt(stream, password))
{
byte[] array = new byte[data.Length];
int count = stream2.Read(array, , array.Length);
@string = Encoding.UTF8.GetString(array, , count);
}
}
return @string;
} public static string ComputeHash(Stream input)
{
byte[] array = new byte[input.Length];
input.Read(array, , array.Length);
return Crypter.ComputeHash(array);
} public static string ComputeHash(byte[] input)
{
return BitConverter.ToString(new Murmur3().ComputeHash(input)).Replace("-", string.Empty);
} public static string ComputeHash(string input)
{
return Crypter.ComputeHash(Encoding.UTF8.GetBytes(input));
}
}
}

来自:https://github.com/FastReports/FastReport

遇到一串不知道具体编码的字符串,使用以下代码勉强转中文了:

str = str.Replace("9B25", "");
List<byte> buffer = new List<byte>();
for (int i = ; i < str.Length; i++)
{
if (i % == )
{
string s = str.Substring(i - , );
buffer.Add(Convert.ToByte(s, ));
}
}
Encoding.Default.GetString(buffer.ToArray());

[转][C#]加密解密类的更多相关文章

  1. [C#] 常用工具类——加密解密类

    using System; using System.Configuration; using System.Collections.Generic; using System.Text; using ...

  2. 对接携程供应商php加密解密类

    php加密解密类 <?php class Aes{ private $key = '6b4d63211b4ba869'; private $iv = 'dbbf079b95004f65'; pu ...

  3. PHP针对数字的加密解密类,可直接使用

    <?phpnamespace app;/** * 加密解密类 * 该算法仅支持加密数字.比较适用于数据库中id字段的加密解密,以及根据数字显示url的加密. * @author 深秋的竹子 *  ...

  4. Java常用的加密解密类(对称加密类)

    Java常用的加密解密类 原文转载至:http://blog.csdn.net/wyc_cs/article/details/8793198 原创 2013年04月12日 14:33:35 1704 ...

  5. 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间

    生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...

  6. java文本文件加密解密类

    原文:http://www.open-open.com/code/view/1420031154765 import java.awt.*; import java.awt.event.*; impo ...

  7. AES对称加密解密类

    import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.spec.Se ...

  8. 推荐分享一个牛X的自定义PHP加密解密类

    通俗点说,用它来进行加密,同一个字符串,每次进行加密,得出的结果都是不一样的,大大加强了数据安全性.同时还可设定加密后数据的有效期,简直牛掰了 #食用方法 将下面的第二份模块代码保存为 Mcrypt. ...

  9. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

  10. PHP加密解密类

    <?php class Mypass { static function encrypt($data, $key){ $key = md5($key); $x = 0; $len = strle ...

随机推荐

  1. JavaScript选择点击

    //class选择器[分类添加商品] var a=document.getElementsByClassName("item-collection-detail__products-item ...

  2. 【其他】【http】【1】HTTP状态码

    一些常见的状态码: 200 - 服务器成功返回网页 400 - 错误请求 404 - 请求的网页不存在 500 - 服务器内部错误 503 - 服务器超时 状态码大全: 1xx(临时响应)表示临时响应 ...

  3. 学习:MQTT协议及原理

    1 MQTT协议实现方式: 实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish).代理(Broker)(服务器).订阅者(Subscribe) ...

  4. 【问题】用ant编译时,提示编码utf为不可映射字符

    分析:eclipse默认的编码为gbk,而ant里的build.xml文件里定义的为utf-8格式.两者格式不统一. 建议:将工程的编码改成utf-8的格式,一般java工程也建议为utf-8格式.

  5. 关于WebUpload插件的使用

    上传的路径地址: 删除图片时也应该注意: unlink('/Upload/1.jpg')删除不了 unlink('./Upload/1.jpg')可以删除. 也就是说,绝对路径删除不了  相对路径可以 ...

  6. unity中Event Trigger组件应用代码

    using UnityEngine; using System.Collections; using UnityEngine.Events; using UnityEngine.EventSystem ...

  7. linux c++ curl https 请求并双向验证SSL证书

    1.配置curl https请求需要提供 CA证书.客户端证书和客户端秘钥,这三个文件的pem格式. 分别对应 curl_easy_setopt() 函数的 下面三个参数: CURLOPT_CAINF ...

  8. 异常处理:try - except 和 try finally。

    异常处理:try-except语句 1)      此处:as reason为可选参数,reason是一个变量. 2)      使用try—except语句时,检测范围内出现错误,不会有红色的报错提 ...

  9. yuan的第二次随笔

    第一题: 计算两数的和与差 设计思路: 1:看题目:主函数与函数声明,知道它要你干什么 2:理解与分析:在main中,定义两个实数a,b;要你求两数的和与差 3:解答:通过调用函数sum_diff,指 ...

  10. RPi 3B Aduio 3.5mm output

    /********************************************************************** * RPi 3B Aduio 3.5mm output ...