{
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. hadoop集群中动态添加节点

    集群的性能问题需要增加服务器节点以提高整体性能 https://www.cnblogs.com/fefjay/p/6048269.html hadoop集群之间hdfs文件复制 https://www ...

  2. pymysql连接数据库,读取表内容

    python中有MySQLdb.pymysql等数据库模块,本文用pymysql模块连接mysql数据库,并且读取数据库表 看过其他博文的介绍,把程序和数据库比作两个目的地,将游标比喻成运输货车 很是 ...

  3. excel表格中,怎么根据一列重复的数据求对应另一列总和

    如下: 求出姓名对应分数总和对应 : 首先复制一份Sheet2 对Sheet1进行操作选中A列姓名 数据->删除重复项->以前选中区域排序->删除重复项 然后删除对应成绩项选中张三对 ...

  4. python全栈开发笔记----基本数据类型---列表方法

    #list 类中提供的方法 #参数 1.def append(self, *args, **kwargs)原来值最后追加#对象..方法(..) #li对象调用append方法 li = [11,22, ...

  5. List集合1

    一.List接口介绍 List继承自Collection接口,是单列集合的一个重要分支,习惯性的会将实现List接口的对象称为List集合 二.List接口3个特点 1.有序(有序不是顺序,有序指的是 ...

  6. 2. Net、ASP.Net、C#、VisualStudio之间的关系

    .Net一般指的是.NetFramework 是一个开发和运行环境,是框架, 提供了基础的.Net类.这些类可以被任何一种.Net编程语言调用,.NetFramework还提供了CLR,JIT,GC等 ...

  7. 成功解决android studio打包报错

    Win7系统,Android Studio 版本2.3.1,对cpp-empty-test使用了 cocos compile -p android --android-studio,命令 编译打包AP ...

  8. [IntelliJ IDEA入门] 新建一个Java项目

    新建一个Project 是否有JDK配置 选择JavaEE 点击Next 项目路径和文件 .idea (directory based) 创建项目的时候自动创建一个 .idea 的项目配置目录来保存项 ...

  9. 使用vector<vector<int>>实现的一个二维数组

    本文为大大维原创,最早于博客园发表,转载请注明出处!!! 1 #include<iostream> #include<vector> using namespace std; ...

  10. [Mac]secureCRT私钥转换为mac ssh私钥

    工作环境从win迁移到mac后,win上原来用secureCRT生成的key,在mac的iterm2中不能兼容使用,导致无法再mac下登录.报错如下: key_load_public:invalid ...