MD5算法

MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)

l  为了防止用户偷懒,算两次MD5值,或者加上一个固定的字符串

MD5算法理论上是不可逆的,因此攻击的唯一办法就是碰撞。两个不同的内容生成相同的MD5值,这就叫碰撞。

l  (*)MD5的其他应用:第三方支付用MD5对金额、订单号等进行散列计算,来保证数据是对方发出的。如鹏网项目会讲。

l(*)和MD5类似的还有SHA等算法。

l  注意:对于字符串计算MD5时,根据字符串保存的编码不同最终计算出的MD5值也不同,所以要求使用统一的编码。

Excel中的电话号码问题,看起来像数字的字符串以半角单引号开头就没问题了

Workbook;工作簿-----》包含的叫页(工作表):Sheet------》行:Row-------》单元格:Cell。

l  DBNull和null的区别:如果值为null,直接写null的话用SqlParameter提交到服务器上是报错的(未提供值),需要写DBNull.Value:new SqlParameter(“Id”, model.Id==null?(object)DBNull.Value:model.Id)。三元运算符冒号两边的值类型相同或者有继承关系。

l//int i=(j==null?10:(int)j);

(*) int i = j ?? 10;// null 合并运算符,等价于上面的

MD5算法是什么?

它可以讲字符串或者一个文件流变成一个长度为32的字符串

特点: 加密不可逆

MD5存在的意义:

写法:用C#实现MD5

1.将字符串用MD5算法处理

准备一个字符串

将字符串变成一个字符数组

创建MD5对象,调用其ComputeHash方法

得到一个16个字节的字节数组

使用SB拼接,将每个字节用ToString("x2")处理

代码:

---------------------将一个字符串用MD5处理-------------------------

string str="abc";

//字节数组

//如果是字符串是英文,用Encoding.UTF8,如果是中文就用Encoding.GetEncoding("gb2312")

bytes[] bs = Encoding.UTF8.GetBytes(str);

//准备MD5对象

MD5 md5 = MD5.Create();

//计算指定字节数组的哈希值

bs=md5.ComputeHash(bs);

StringBuilder sb = new StringBuilder();

因为对于字节如果用十进制表示为0-255,用二进制表示为0000000-11111111,十六进制为000000-FFFFFF,为了统一处理,这里做了统一,用十六进制

for(int i=0;i<bs.Length;i++)

{

sb.Append(bs[i].ToString("x2"));

}

Console.WriteLine(sb.ToString());

Console.ReadKey();

----------------------将一个文件用MD5算法处理-----------------------

MD5 md5=MD5.Create();

string path=@"文件路径";

//准备好byte数组

byte[]bs;

using(FileStream file= new FileStream(path,FileMode.Open,FileAccess.Read))

{

bs = md5.ComputeHash(file);

}

//后面的代码和上面处理字符串的代码一样用

for(int i=0;i<bs.length;i++)

{

sb.Append(bs[i].ToString("x2"));

}

Console.WriteLine(sb.ToString());

Console.ReadKey();

拼音检索

在做人员统计时,有时候会遇到多音字,需要提供姓名的全拼,并将其列入数据库

拼音在进行检索的时候,有些字并不知道如何读

微软提供的一个压缩包:vsintlpack1.zip,解压后你会发现里面有很多msi类型的文件,找到CHSPinYinConv.msi

安装后,在安装目录下有两个帮助文档,里面只有一个命名空间,空间下面有一个类,类里面有很多方法

而我们想要的是:给定一个汉字,获得一个拼音,里面有个属性:Pinyins,他是一个只读的字符串集合,如何使用?

1,在安装目录下有两个文件(ChnCHarInfo.dll,ChnCharInfo.XML)

2,创建一个控制台应用程序,新建一个文件夹dll,把那两个文件放进来并添加引用

3,代码:

using Microsoft.International.Converters.PinYinConverter;

class Program

{

static void Main(string[] args)

{

//使用,ChineseChar方法要一个字符

ChineseChar cc=new ChineseChar('行');

for(i=0;i<cc.PinYins.Count;i++)

{

if (cc.Pinyins[i] != null)

{

string temp = Regex.Replace(cc.Pinyins[i], @"\d+", "");

if (temp.Length > 0)

{

//打印出拼音

console.writeline(cc.PinYins[i]);

}

}

}

console.readkey();

//注意:拼音中是带有声调的,声音不需要,而且会有部分多余的空项存在

//这样利用正则表达式将声调和空项排除,得到每个字的不同的读法,选择你的名字对应的拼音

//将其列入数据库,就可以用拼音检索的方式得到相应的数据

}

}

adapter:

//4.执行一个sql语句,并把结果集放入本地的DataTable中.这里数据已

//经放到本地,断开数据库连接,还是可以访问到数据的.

public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)

{

using (SqlConnection conn = new SqlConnection(ConnectionString))

{

using (SqlDataAdapter da = new SqlDataAdapter(sql, conn))

{

//adaper有四个方法增删改查,在往sql语句中添加参数时,根据情况调用这四个方法即可

da.SelectCommand.Parameters.AddRange(parameters);

DataTable dt = new DataTable();

//Fill方法其实执行的是da.SelectCommand中的sql语句,这里可以写conn.open也可以不写,如果不写,da会自动连接数据库

da.Fill(dt);

return dt;

}

}

}

邮件发送

  • 操作邮件用的类:MailMessage()  MailAddress
  • 发送服务器用的类:SmtpClient(); NetworkCredential()
  • 带HTML的内容:AlternateView()有一个静态方法
  • 邮件的HTML中加图片:<img src='cid:meinv'
  • LinkedResource lr = new  LinkedResource  ("1.jpg","image/gif");
  • lr.ContentId="meinv";
  • htmlbody.LinkedResources.Add(lr);
  • 添加附件:Attachment()

MD5、拼音检索和邮件发送的更多相关文章

  1. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  2. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  3. Linux中Postfix邮件发送配置(三)

    部署DNS服务器 postfix根据域名和地址做一个MX记录,A记录,PTR记录(一般在互联网上邮件服务器都要反解,没有PTR记录会认为是垃圾邮件) $ service iptables stop $ ...

  4. [RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送

    RHEL7.0 下 Postfix + Dovecot 实现邮件发送 一.前言 大家都对邮件服务(mail service)很感兴趣嘛.我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平 ...

  5. phpmailer实现邮件发送

    phpmailer实现邮件发送 1.代码 <?php require("class.phpmailer.php"); //这个是一个smtp的php文档,网上可以下载得到 $ ...

  6. PHP 邮件发送类

    mail.php <?php /** * 邮件发送类 * 支持发送纯文本邮件和HTML格式的邮件,可以多收件人,多抄送,多秘密抄送,带附件的邮件 * 需要的php扩展,sockets和Filei ...

  7. Javaweb-文件上传和邮件发送

    1.文件上传 新建空项目 准备工作 在maven仓库里下载commons io 和 commons fileupload两个jar包 实用类介绍 文件上传注意事项 为保证服务器安全,上传文件应该放在外 ...

  8. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  9. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

随机推荐

  1. linux产生静态库和动态库

    如何构建一个库 静态库(.a) 静态库的建立和使用是非常简单的: 1. 编译源文件:gcc -Wall -c test1.c test2.c 2. 生成库文件:ar -cvq libtest.a 3. ...

  2. 细谈Linux和windows差异之图形化用户接口、命令行接口

    相信来看本博文的朋友,肯定是已经玩过linux好段时间了,才能深刻理解我此番话语. 这是在Windows下的命令行接口 这是windows下的用户接口 就是它,explorer.ext,可以去尝试.把 ...

  3. hdu 1595 find the longest of the shortest【最短路枚举删边求删除每条边后的最短路,并从这些最短路中找出最长的那条】

    find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others)    Memory Limit: 32768/32768 ...

  4. JS 实现地区,省份,城市,县区4级联动

    刚学JS,实战一下,做一个省份信息4级联动. 但是网上查了都是3级的,没有4级,现在做一个的是带地区的4级联动,最简单的办法是修改别人的代码,最开始找到的事类似于下边这个的: 省市县关联菜单 < ...

  5. UVa 10465 Homer Simpson (枚举)

    10465 - Homer Simpson Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onli ...

  6. 手把手教你去ECSHOP版权 powered by ecshop

      各位朋友大家好,欢迎来到ecshop开发中心系列视频教程:ecshop去版权.去版权是一种很常见的问题,有很多客户提到ECSHOP如何去版权?怎样去得干净.去得彻底?今天,ECSHOP开发中心手把 ...

  7. Clarkson不等式

  8. Parameterized Path 的例子

    Improve the planner's ability to use nested loops with inner index scans (Tom Lane) The new "pa ...

  9. Oracle12c功能增强 新特性之管理功能的增强

    1.    数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...

  10. javax.naming.NameNotFoundException:Name[ XXX] is not bound in this context.

    在用局部数据源去连数据库的时候,在本地的项目中,都是可以的,可是一部署到服务器上,就报错了. 报的错误是:javax.naming.NameNotFoundException:Name[ XXX] i ...