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. 【原创】_INTSIZEOF 内存按照int对齐

    #include <stdarg.h> 里面定义了如下宏 #define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(siz ...

  2. css3种方法实现元素的绝对居中

    元素的绝对居中应该是很多人熟悉的一个小应用,我记得很多年前去神州数码面试的时候就遇到过这个面试题.方法比较简单,代码如下: .node{ width : 300px; height : 400px; ...

  3. C#基础知识回顾-- 反射(3)

    C#基础知识回顾-- 反射(3)   获取Type对象的构造函数: 前一篇因为篇幅问题因为篇幅太短被移除首页,反射这一块还有一篇“怎样在程序集中使用反射”, 其他没有什么可以写的了,前两篇主要是铺垫, ...

  4. Oracle中的User与Schema

    Oracle中有两个概念容易混淆──user和schema,本随笔记录并摘抄了一些促进理解这连个概念的理解方法,希望有助于分清这两个概念. user是控制权限的,而schema则是一个容器,非所有者如 ...

  5. MapReduce的流程

    1. Inputformat会从job的INPUT_DIR目录下读入待处理的文件,检查输入的有效性并将文件切分成InputSplit列表.Job实例可以通过setInputFormatClass(Cl ...

  6. 知方可补不足~SQL数据库用户的克隆,SQL集群的用户同步问题

    我们知道在为sqlserver建立功能数据库时,通过会为库再建立一个登陆名,而这个登陆名时,只用来管理这个数据库,这是安全的,正确的.

  7. MVC4网站发布到windows server 2003服务器

    在windows server 2003上部署MVC4的网站,需要进行以下工作 用VS2013新建项目 在创建项目的时候选择的矿建为.NET Framework4,然后选择[ASP.NET MVC4 ...

  8. RapidXml用法

    一.写xml 文件 #include <iostream> #include "rapidxml/rapidxml.hpp" #include "rapidx ...

  9. UIAlertController 简单修改title以及按钮的字体颜色

    苦逼的开发者,最终败给了一个任性的UI,系统原生UIAlertController的按纽颜色必须改.于是,开始了不归路.之前的版本是自己用view写的一个仿系统UIActionSheet,动画感觉都挺 ...

  10. EasyARM i.mx28学习笔记——开箱试用总结

    0 前言     本月初(2014年8月)购买了周立功的EasyARM开发板,主控为EasyARM i.mx287.出于下面几个理由购买了该开发板.     [1]主要原因,有人约我一起学习一起使用该 ...