C#实现简单的字符串加密
最近用到一些字符串加密,而.net中提供的加密算法中用起来比较复杂,便简单的封装了一下,方便日后使用。
public
class
Encrypt
{
static
Encoding encoding = Encoding.UTF8;
public
static
string EncryptDES(string encryptString, string key)
{
var input = encoding.GetBytes(encryptString);
var ouptputData = ProcessDES(input, key, true);
var outputStr = Convert.ToBase64String(ouptputData);
//base64编码中有不能作为文件名的'/'符号,这里把它替换一下,增强适用范围
return outputStr.Replace('/', '@');
}
public
static
string DecryptDES(string decryptString, string key)
{
decryptString = decryptString.Replace('@', '/');
var input = Convert.FromBase64String(decryptString);
var data = ProcessDES(input, key, false);
return encoding.GetString(data);
}
private
static
byte[] ProcessDES(byte[] data, string key, bool isEncrypt)
{
using (var dCSP = new
DESCryptoServiceProvider())
{
var keyData = Md5(key);
var rgbKey = new
ArraySegment<byte>(keyData, 0, 8).ToArray();
var rgbIV = new
ArraySegment<byte>(keyData, 8, 8).ToArray();
var dCSPKey = isEncrypt ? dCSP.CreateEncryptor(rgbKey, rgbIV) : dCSP.CreateDecryptor(rgbKey, rgbIV);
using (var memory = new
MemoryStream())
using (var cStream = new
CryptoStream(memory, dCSPKey, CryptoStreamMode.Write))
{
cStream.Write(data, 0, data.Length);
cStream.FlushFinalBlock();
return memory.ToArray();
}
}
}
public
static
byte[] Md5(string str)
{
using (var md5 = MD5.Create())
{
return md5.ComputeHash(Encoding.UTF8.GetBytes(str));
}
}
}
这个封装支持MD5和DES加密(有空再把RSA给补上),用于字符串加密,主要考虑的是方便使用,并没有追求最优效率。为方便使用做了如下两点优化:
- 密钥为字符串形式,没有长度限制
- 加密后输出的字符串为Base64的改造形式,可以用于文件名
C#实现简单的字符串加密的更多相关文章
- delphi简单单向字符串加密函数
delphi用久了有的时候得给密码加密一下,简单点就行了,这个函数还是不错的. const XorKey:array[0..7] of Byte=($B2,$09,$AA,$55,$93,$6D,$8 ...
- 简单的JavaScript字符串加密解密
简单的JavaScript字符串加密解密 <div> <input type="text" id="input" autofocus=&quo ...
- 使用Z3破解简单的XOR加密
使用Z3破解简单的XOR加密 翻译:无名侠 原文地址: https://yurichev.com/blog/XOR_Z3/ 如果我们有一段用简单XOR加密过的文本,怎么寻找密钥呢?密钥的长度可能很长, ...
- C#,ASP.NET简单的MD5加密,解密
简单的MD5加密 首先要有一个加解密的规则 就是key 代码如下 // 创建Key public string GenerateKey() { DESCryptoServiceProvider de ...
- C#中对Web.Config、App.Config字符串加密与解密的方法
我们平常的项目里面的配置文件通常都是明文形式的存在,现在就是为了项目安全性增强,同时又显得高逼格点, 我们可以采用加密的方式,而我们C#很强大,因为他内置的一些指令方式,很方便而且使用起来还不用解密, ...
- javascript 异或运算符实现简单的密码加密功能
写在前面的 当我们需要在数据库中存储用户的密码时,当然是不能明文存储的. 我们就是介绍一下用^运算符来实现简单的密码加密以及解密功能 上代码 首先,回顾一下基础知识. String.fromCharc ...
- ollvm 新增字符串加密功能
好久没弄ollvm了,可以继续了,今天给ollvm新增了一个pass,用来加密字符串,这个pass是从别的库里面扒出来的. 本文是基于在Windows 上使用VS2017编译出来的ollvm,在这个基 ...
- Redis的简单动态字符串实现
Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类 ...
- 利用javascript对字符串加密
没事利用js写个对字符串加密的方法,基本原理就是先把字符串转化成对应的unicode(用到的方法是charCodeAt()),再把unicode统一减去100(这里加减随便你取多少),把得到的unic ...
随机推荐
- 深入理解CSS中的margin
1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准 ...
- lombok 去除麻烦的实体类get和set,toString书写
首先在pom.xml中添加 <dependency> <groupId>org.projectlombok</groupId> <artifactId> ...
- vb如何将数据库中某个字段显示在一个文本框
Dim mrc As ADODB.Recordset Private Sub cmdQuery_Click() Dim txtSQL As String Dim MsgText As String t ...
- 使用 Entity Framework 返回 JsonResult 时循环引用的避免【EF 转 JSON】
var ui = (from u in _db.USER_INFO select u).FirstOrDefault(); // 单个实体的用法 ZRQCommon.EntitiesTools e = ...
- 聊聊Python中的GIL
对于广大写Python的人来说,GIL(Global Interpreter Lock, 全局解释器锁)肯定不陌生,但未必清楚GIL的历史和全貌是怎样的,今天我们就来梳理一下GIL. 1. 什么是GI ...
- [bzoj3514][CodeChef GERALD07] Chef ans Graph Queries [LCT+主席树]
题面 bzoj上的强制在线版本 思路 首先可以确定,这类联通块相关的询问问题,都可以$LCT$+可持久化记录解决 用LCT维护生成树作为算法基础 具体而言,从前往后按照边的编号顺序扫一遍边 如果这条边 ...
- 设置RobotFramework的ftplibrary中,将Upload_file操作的异常改为回显错误信息。
测试中需要通过FTP通道,将数据发送给服务器,而这个上传的数据要被阻断.在结合RobotFramework测试中,安装的ftplibrary,使用upload_file操作,如果上传动作失败,会抛出异 ...
- mysql 查询结果创建表
用 SELECT 的结果创建表 关系数据库的一个重要概念是,任何数据都表示为行和列组成的表,而每条 SELECT 语句的结果也都是一个行和列组成的表.在许多情况下,来自 SELECT 的“表”仅是一个 ...
- ES6 - Babel编译环境搭建
都看到这里了,我就不写什么node环境安装之类的了. 直接从新建项目文件夹后开始吧! 安装依赖: 命令行cd到项目文件夹之后,执行以下命令:(mac记得前边加sudo) npm init –y // ...
- V4或者V7包重复冲突,但是不知道删除那个的问题
加这行代码在dependencies统一级别 configurations { all*.exclude group: 'com.android.support', module: 'support- ...