C# 加密算法

public static class Common

{

#region MD5加密

/// <summary>

/// MD5加密

/// </summary>

/// <param name="strSource">需要加密的字符串</param>

/// <returns>MD5加密后的字符串</returns>

public static string Md5Encrypt(string strSource)

{

//把字符串放到byte数组中

byte[] bytIn = System.Text.Encoding.Default.GetBytes(strSource);

//建立加密对象的密钥和偏移量

byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量

byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥

//实例DES加密类

DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();

mobjCryptoService.Key = iv;

mobjCryptoService.IV = key;

ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();

//实例MemoryStream流加密密文件

System.IO.MemoryStream ms = new System.IO.MemoryStream();

CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);

cs.Write(bytIn, 0, bytIn.Length);

cs.FlushFinalBlock();

return System.Convert.ToBase64String(ms.ToArray());

}

/// <summary>

/// MD5解密

/// </summary>

/// <param name="Source">需要解密的字符串</param>

/// <returns>MD5解密后的字符串</returns>

public static string Md5Decrypt(string Source)

{

//将解密字符串转换成字节数组

byte[] bytIn = System.Convert.FromBase64String(Source);

//给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相同

byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 };//定义偏移量

byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 };//定义密钥

DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();

mobjCryptoService.Key = iv;

mobjCryptoService.IV = key;

//实例流进行解密

System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);

ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();

CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);

StreamReader strd = new StreamReader(cs, Encoding.Default);

return strd.ReadToEnd();

}

#endregion

#region 动态加密

private static byte[] s_bytKey;

static Common()

{

s_bytKey = new byte[] { 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0x16, 0x27, 0x38, 0x49, 80, 0x61, 0x72, 0x83, 0x94, 0xa5, 0xb6 };

}

/// <summary>

/// 解密

/// </summary>

/// <param name="text"></param>

/// <param name="key"></param>

/// <returns></returns>

public static string PutBykey(string text, string key)

{

byte[] buffer = new byte[text.Length];

byte[] bytes = Encoding.UTF8.GetBytes(Dscf.Global.Common.Common.DisposeId(key));

RijndaelManaged managed = new RijndaelManaged();

buffer = Convert.FromBase64String(text);

MemoryStream stream = new MemoryStream();

CryptoStream stream2 = new CryptoStream(stream, managed.CreateDecryptor(bytes, s_bytKey), CryptoStreamMode.Write);

stream2.Write(buffer, 0, buffer.Length);

stream2.FlushFinalBlock();

Encoding encoding = new UTF8Encoding();

return encoding.GetString(stream.ToArray());

}

/// <summary>

/// 加密

/// </summary>

/// <param name="text"></param>

/// <param name="key"></param>

/// <returns></returns>

public static string GetByKey(string text, string key)

{

byte[] bytes = Encoding.UTF8.GetBytes(text);

byte[] rgbKey = Encoding.UTF8.GetBytes(Dscf.Global.Common.Common.DisposeId(key));

RijndaelManaged managed = new RijndaelManaged();

MemoryStream stream = new MemoryStream();

CryptoStream stream2 = new CryptoStream(stream, managed.CreateEncryptor(rgbKey, s_bytKey), CryptoStreamMode.Write);

stream2.Write(bytes, 0, bytes.Length);

stream2.FlushFinalBlock();

return Convert.ToBase64String(stream.ToArray());

}

/// <summary>

/// 处理Id,转变为加密key

/// </summary>

/// <param name="id"></param>

/// <returns></returns>

public static string DisposeId(string id)

{

string strValue = "";

for (int i = 0; i < 9 - id.Length; i++)

{

strValue += i;

}

return id.ToString() + strValue;

}

#endregion

}

时间: 2024-08-10 21:28:19

C# 加密算法的相关文章

常见加密算法

常见的加密算法可以分成三类,对称加密算法,公钥加密算法和单向加密算法. 对称加密 指加密和解密使用相同密钥的加密算法.对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性.假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦.对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去

加密算法笔记

加密算法:MD5.SHA,DES,AES,IDEA,RSA.BlowFish 一:单向散列算法 单向散列算法:1.也就是Hash算法,将任意长度的消息队列压缩成某一固定长度的函数, 2.过程不可逆,只是单向过程, 3.包括MD5,SHA,N-Hash, MD5:消息摘要算法,对输入任意长度的消息进行运算,产生一个128位的消息摘要. SHA:安全散列算法,SHA-1,SHA-256,SHA-384,SHA-512 二:对称加密算法 1.加密秘钥和解密秘钥完全相同 2.加密安全性依赖于秘钥的秘密性

C#封装加密算法(MD5、SHA、HMAC、DES、RSA)的一个类

using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Wen.Helpers { /// <summary> /// 安全助手 /// </summary> public sealed class SecurityHelper { private static readonly byte [] IvBytes = { 0x01, 0x23, 0x

Patch OpenSSL使其支持CHACH20_POLY1305加密算法

截止目前的OpenSSL-1.0.2j的版本还不支持Google的CHACHA20加密算法.CHACHA20加密算法相对RC4等相对安全,也针对ARM的手机端进行优化,使其更快更省电. 不过最新的Intel处理器及ARM V8的处理器通过AES-NI指令集对AES-GCM加密算法进行了优化,速度要比chacha20快很多,所以在支持AES-NI指令集的设备上优先使用AES-GCM加密算法,在设备不支持的情况下使用chacha20加密算法. 支持chacha20加密算法的3种方式: 使用Libre

加密技术及常见加密算法

有了互联网的同时给我们的日常生活带来了不少的便利,与此同时也给我们带来了不少的安全隐患,可能你在和别人通信的同时,通信数据就被别人截获了,所以就必须要有一种相应的加密技术,来保护我们的通信隐私.那么今天就大家来简单的了解一下加密技术及一些常见的加密算法. 1.为什么需要加密 1.不加密流量的易受攻击性 2.不加密密码/数据容易被嗅探 3.不加密数据容易被操作 4.不加密无法验证操作 5.不加密相当于邮寄明信片 2.不安全的传统协议 telnet.FTP.POP3等等:不安全密码 http.smt

PHP android ios相互兼容的AES加密算法

APP项目用户密码传输一直没有用HTTPS,考虑到用户的隐私暂时先用AES对密码加密,以后也可以用于手机端与服务端加密交互. PHP的免费版phpAES项目,手机端解码各种不对. 好不容易找了PHP ANDROID IOS,相互加解密正常的AES加密算法代码. PHP的AES加密算法: [codesyntax lang=”php”] <?php class MCrypt { private $hex_iv = '00000000000000000000000000000000'; # conve

[转载]MD5加密算法原理

本文转载自: http://blog.csdn.net/forgotaboutgirl/article/details/7258109 需要视频版的可以看一下泰克老林讲的MD5原理 下载地址: 网速太卡,周末上传后补上.... MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权费用. MD5功能: 输入任意长度的信息,经过处理,输出为128位的信息(数字指纹): 不同的输入得到

对称加密算法

对称加密算法 提示:加密内容属于高级程序员的话题!有些内容会很枯燥!注意掌握加密的思路和操作步骤即可!代码不要求会写,只要会用就行! 又称传统加密算法 加密和解密使用同一个密钥 对称加密算法示例 密钥:X 加密算法:每个字符+X 明文:Hello 密钥为 1 时加密结果:Ifmmp 密钥为 2 时加密结果:Jgnnq 优缺点 优点 算法公开.计算量小.加密速度快.加密效率高 缺点 双方使用相同钥匙,安全性得不到保证 注意事项 密钥的保密工作非常重要 密钥要求定期更换 经典算法 算法 说明 DES

非对称加密算法

介绍 非对称加密算法需要两个密钥:公开密钥(publickey) 和 私有密钥(privatekey) 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密 特点 算法强度复杂.安全性依赖于算法与密钥 加密解密速度慢 与对称加密算法的对比 对称加密只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥 非对称密钥体制有两种密钥,其中一个是公开的 RSA 算法原理 找出两个“很大”的质数:P & Q

第九章 对称加密算法--IDEA

注意:本节内容主要参考自<Java加密与解密的艺术(第2版)>第7章“初等加密算法--对称加密算法” 9.1.IDEA 特点: 先于AES出来取代DES 安全性极高 常用于电子邮件加密算法 9.2.实现方式 Bouncy Castle(BC,工作模式只有ECB,密钥长度为128位) 9.2.1.基于BC实现的IDEA算法 1 package com.util.idea; 2 3 import java.io.UnsupportedEncodingException; 4 import java