public partial class stringTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
/*
string s = "i am programmer";
var arr = s.Split(' ');
for (int i = arr.Length - 1; i >= 0; i--)
{
Response.Write(arr[i]+" ");
}*/
//加密测试
string test = "邹大侠";
string vkey = "zpc870921";
Response.Write(string.Format("源字符串:{0}<br/>",test));
string encrypResult = EncryptDes(test,vkey);
Response.Write(string.Format("DES加密后字符串:{0}<br/>", encrypResult));
string decryptResult = DecryptDes(encrypResult, vkey);
Response.Write(string.Format("DES解密后字符串:{0}<br/>", decryptResult));
Response.Write(string.Format("32位MD5加密:{0}<br/>", MD5Encrypt(test)));
}
/// <summary>
/// 32位md5加密算法
/// </summary>
/// <param name="toencrypt"></param>
/// <returns></returns>
private string MD5Encrypt(string toencrypt)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] s = Encoding.UTF8.GetBytes(toencrypt);
byte[] hashbyte = md5.ComputeHash(s);
StringBuilder sb = new StringBuilder();
foreach(var item in hashbyte)
{
sb.AppendFormat("{0:X2}",item);
}
return sb.ToString();
}
/// <summary>
/// DES对称秘钥加密算法
/// </summary>
/// <param name="toencrypt"></param>
/// <param name="vkey"></param>
/// <returns></returns>
private string EncryptDes(string toencrypt,string vkey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.IV = Encoding.UTF8.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(vkey,"md5").Substring(0,8));
des.Key = Encoding.UTF8.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(vkey,"md5").Substring(0,8));
MemoryStream ms = new MemoryStream();
byte[] s=Encoding.UTF8.GetBytes(toencrypt);
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(s, 0, s.Length);
cs.FlushFinalBlock();
cs.Close();
}
string result = Convert.ToBase64String(ms.ToArray());
return result;
}
/// <summary>
/// DES对称秘钥解密
/// </summary>
/// <param name="toencrypt"></param>
/// <param name="vkey"></param>
/// <returns></returns>
private string DecryptDes(string toencrypt,string vkey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = Encoding.UTF8.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(vkey,"md5").Substring(0,8));
des.IV = Encoding.UTF8.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(vkey, "md5").Substring(0, 8));
byte[] s = Convert.FromBase64String(toencrypt);
MemoryStream ms = new MemoryStream(s);
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader sr=new StreamReader(cs,Encoding.UTF8);
string result =sr.ReadToEnd();
return result;
}
}
- PHP对称加密-AES加密、DES加密
对称加密 对称加密算法是指,数据发信方将明文(原始数据)和密钥一起经过加密处理后,使其变成复杂的加密密文发送出去.收信方收到密文后,若要解读原文,则需要使用加密密钥及相关算法的逆算法对密文进行解密,使 ...
- DES加解密算法Qt实现
算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...
- JavaScript与C#互通的DES加解密算法
原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DE ...
- 信息安全-加密:DES 加密
ylbtech-信息安全-加密:DES 加密 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资 ...
- md5加密、Des加密对称可逆加密、RSA非对称可逆加密、https单边验证、银行U盾双边认证
1.md5不可逆的加密方式,加密成一个32位的字符串.算法是公开的,任何语言的加密结果都是一样的.总有可能是重复的. 用途: (1)防止明文存储:可以用作密码加密 ...
- (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题
我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...
- <密码学入门>关于DES加密算法解密算法相关问题
题外话:个人觉得DES加密解密真的是一种过程冗长的方法,S盒,P盒还有各种各样的变换让人眼花缭乱. (一)Feistel密码结构 要先说Feistel密码结构的原因是DES加密过程是和Feistel密 ...
- Des加解密算法
class DesHelper { /// <summary> /// DES加密方法 /// </summary> ...
- 实验一:C语言实现DES加解密算法
计算程序执行10万次需要的时间: 总共需要175秒 加解密一次的时间小于:0.00175秒 纯计算加解密的时间会更短 去除IO操作后的时间 也就是说加解密一次的时间为0.07毫秒 /*-------- ...
随机推荐
- RxJS & Angular
RxJS & Angular https://www.learnrxjs.io/ https://rxjs-cn.github.io/learn-rxjs-operators/ https:/ ...
- Redis使用手册
简介 Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型. Key-Value数据库. Redis面向互联网的方案提供了三种形式: 1.主从 主机进行写操作, ...
- OSCache页面缓存的使用
完成项目时,为了减少对数据库的频繁操作,引出了缓存,缓存分为以下几种: 1.一级缓存 一级缓存的存储域是session,作用于单个的dao 2.二级缓存 二级缓存的存储域是sessionFactory ...
- log4net将日志写入ElasticSearch
log4net将日志写入ElasticSearch https://www.cnblogs.com/huangxincheng/p/9120028.html 很多小步快跑的公司,开发人员多则3-4个, ...
- JS调用C#中的变量
今天早上做项目,需要使用JS来得到数据库里面表的行数.经过查找资料,知道可以使用在C#中定义一个全局变量.在JS中调用即可,自己总结一下:供日后参考; public string Str() { st ...
- Luogu2737 USACO4.1麦香牛块(动态规划)
小凯的疑惑升级版.只有两个数的话不能表示的最大数是ab-a-b,显然如果可选数增加不会比这更大,所以只要答案存在一定小于256*256-2*256.在这个范围内背包即可. #include<io ...
- 【转】如何解决每次打开office2010都会出现正在配置以及使用KMS
转自:http://jingyan.baidu.com/article/90895e0fb1525964ec6b0bb5.html 一.使用mini-KMS_Activator_v1.2_Office ...
- Linux和Windows上实现的异同-Linux的自适应ACK
上周有同事问,延迟ACK到底对应用层会产生什么后果,我也不知道该如何作答,于是丢了一个链接: TCP之Delay ACK在Linux和Windows上实现的异同-Linux的自适应ACK: 是的,这是 ...
- Event loop的macro task和micro task
macrotask在一些文章中也被直接称为task. 一个宿主环境只有一个事件循环,但可以有多个任务队列.宏任务队列(macro task)与微任务队列(micro task)就是其中之二. 每次事件 ...
- JAX-WS 注解
一.概述 “基于 XML 的 Web Service 的 Java API”(JAX-WS)通过使用注释来指定与 Web Service 实现相关联的元数据以及简化 Web Service 的开发.注 ...