c#简单加密和对称加密
转自:https://www.cnblogs.com/zhihai/archive/2012/05/03/2480856.html
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace Ecan
{
public class EcanSecurity
{
/*MD5是message-digest algorithm 5(信息-摘要算法)的缩写,
* 被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。
* 任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,
* 也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,
* 它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,
* 来校验这个文件是否被“篡改”过。*/
/// <summary>
/// MD5加密函数
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
///
public string md5_Encode(string str)
{
MD5 m = new MD5CryptoServiceProvider();
byte[] data = Encoding.Default.GetBytes(str);
byte[] result = m.ComputeHash(data);
string ret1 = "";
try
{
for (int j = 0; j < result.Length; j++)
{
ret1 += result[j].ToString("x").PadLeft(2, '0');
}
return ret1;
}
catch
{
return str;
}
}
/// <summary>
/// 简单加密函数
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>返回加密后的字符串</returns>
///
public string simple_Encode(string str)
{
string s = "";
try
{
for (int i = 0; i < str.Length; i++)
{
s += (char)(str[i] + 10 - 1 * 2);
}
return s;
}
catch
{
return str;
}
}
/// <summary>
/// 简单解密函数
/// </summary>
/// <param name="str">要解密的字符串</param>
/// <returns>返回解密后的字符串</returns>
///
public string simple_Decode(string str)
{
string s = "";
try
{
for (int i = 0; i < str.Length; i++)
{
s += (char)(str[i] - 10 + 1 * 2);
}
return s;
}
catch
{
return str;
}
}
//默认密钥向量
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// <summary>
/// 对称加密法加密函数
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public string symmetry_Encode(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}
/// <summary>
/// 对称加密法解密函数
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public string symmetry_Decode(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
}
}
}
c#简单加密和对称加密的更多相关文章
- php中des加密解密 匹配C#des加密解密 对称加密
原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数 可以用于C#和php通信 对数据进行加密,其中$key 是 ...
- java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS
概述 java-信息安全(一)-BASE64,MD5,SHA,HMAC java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4 java-信息安全(四)-数据 ...
- java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS
概述 java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS 如果想要理解好https,请尽量了解好以上信息等. 参看文章: http://www.ruanyifeng.com/blog/ ...
- 常见三种加密(MD5、非对称加密,对称加密)
转载. https://blog.csdn.net/SSY_1992/article/details/79094556 任何应用的开发中安全都是重中之重,在信息交互异常活跃的现在,信息加密技术显得尤为 ...
- 指定字符串加密(对称加密DES)
/* * @(#) EncrypAES.java */ import java.security.InvalidKeyException; import java.security.NoSuchAlg ...
- shell 脚本实现文件对称加密
前言 之前手机里管理密码的脚本,都是直接编写进纯文本然后进行多次归档及压缩来实现不明文存储,一直觉得不太安全,于是昨天晚上编写脚本实现了简单的文件对称加密. 网上文章都利用 openssl 来进行文件 ...
- 加密算法--->对称加密与非对称加密算举例说明
目前主流的加密方式有:(对称加密)AES.DES (非对称加密)RSA.DSA 对称加密例子:des对称加密 des对称加密,对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用 ...
- 数字签名中公钥和私钥是什么?对称加密与非对称加密,以及RSA的原理
http://baijiahao.baidu.com/s?id=1581684919791448393&wfr=spider&for=pc https://blog.csdn.net/ ...
- (转)对称加密与非对称加密,以及RSA的原理
一 概述 二对称加密和非对称加密 对称加密 非对称加密 区别 三RSA原理 整数运算 同余运算 当模数为合数n时 当模数为质数p的时候 离散对数问题 RSA原理 一 , 概述 在现代密码学诞生以前,就 ...
随机推荐
- 8597 石子划分问题 dpdp,只考虑第一次即可
8597 石子划分问题 时间限制:500MS 内存限制:1000K提交次数:155 通过次数:53 题型: 编程题 语言: G++;GCC;VC Description 给定n个石子,其重量分别 ...
- PlayMaker Rotate旋转
每秒 绕 Y轴 旋转 180度 ,每帧都执行. 不勾选Every Frame的话就只会旋转一帧.
- 导出csv文件时韩文乱码解决方法
从asp.net导出csv这样配置可以防止韩文等乱码,在头部加上0xEF, 0xBB, 0xBF: string fileName = "attachment;filename=" ...
- 案例51-crm练习新增客户使用数据字典和ajax
1 案例效果 2 使用ajax加载数据字典下拉选-后台部分 1 domain部分-BaseDict package www.test.domain; public class BaseDict { / ...
- rsync 命令中的路径斜线
rsync命令大家都知道,但是其中的一个小细节比较容易被忽略,那就是 路径结尾的 "/" ,在路径的结尾有没有斜线,结果是大不同的.现举例说明: 假设现有两个目录,一个名为sour ...
- 几个CSS的黑科技
这里的黑科技其实就是一些CSS中不怎么为人所知但在解决某些问题的时候很溜的属性. border-radius 很多开发者估计都没有正确认识这个border-radius,因为基本上很多人都是这么用的: ...
- npm EPERM: operation not permitted, rename解决
此问题并非权限问题! 执行如下3条命令解决: 1.清理npm缓存 npm cache clean --force 2.升级npm版本 npm install -g npm@latest --force ...
- Linux 拷贝
拷贝文件夹下所有内容到另一个文件夹: cp -rf 源文件 目标文件 例如:cp -rf /home/efs/Desktop/WEB-INF/* /opt/IBM/WebSphere/AppServe ...
- 国内外著名B2C系统介绍兼比较【收藏版】
一.国内知名B2C系统 1.Shopex国内最大的电子商务系统,有各种辅助工具,php开发,免费但不开源,网店模板众多,较适合有淘宝店的卖家.网址:www.shopex.cn 2.ECshop免费且开 ...
- 设置 text-align: center;line-height:height 居中无效
1.设置文字水平居中 内联元素(行内元素)使用: text-align: center: 使用后文字仍然没有居中 解决方法:设置width:100%: 块元素使用: margin: 0 auto; 2 ...