MD5、拼音检索和邮件发送
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、拼音检索和邮件发送的更多相关文章
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- .NET开发邮件发送功能
.NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知 ...
- Linux中Postfix邮件发送配置(三)
部署DNS服务器 postfix根据域名和地址做一个MX记录,A记录,PTR记录(一般在互联网上邮件服务器都要反解,没有PTR记录会认为是垃圾邮件) $ service iptables stop $ ...
- [RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送
RHEL7.0 下 Postfix + Dovecot 实现邮件发送 一.前言 大家都对邮件服务(mail service)很感兴趣嘛.我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平 ...
- phpmailer实现邮件发送
phpmailer实现邮件发送 1.代码 <?php require("class.phpmailer.php"); //这个是一个smtp的php文档,网上可以下载得到 $ ...
- PHP 邮件发送类
mail.php <?php /** * 邮件发送类 * 支持发送纯文本邮件和HTML格式的邮件,可以多收件人,多抄送,多秘密抄送,带附件的邮件 * 需要的php扩展,sockets和Filei ...
- Javaweb-文件上传和邮件发送
1.文件上传 新建空项目 准备工作 在maven仓库里下载commons io 和 commons fileupload两个jar包 实用类介绍 文件上传注意事项 为保证服务器安全,上传文件应该放在外 ...
- J2EE 邮件发送那些事儿
距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
随机推荐
- iptables端口重定向
需求: tomcat容器使用普通用户启动不能开启1024以内端口,也就80端口不能使用.业务上通常使用80端口访问. 解决方法: iptables既是防火墙也是带路由器功能.所以使用它 ...
- Android开发错误信息收集
android sdk 无法更新或更新太慢 备注信息:sdk manager中加入mirrors.opencas.org,强迫http方式 ADT下载地址:http://dl.google.com/a ...
- poj1743--Musical Theme(后缀数组)
题意:求一列数字中走向相同的两个字序列,长度要求大于5 题解:相邻数字求差,原题就变成求相同的长度大于4的子串. [存疑:在保证两个子串不相交时觉得限定条件应该是大于x,但是wa了= = 不是很理解] ...
- nyoj 129 树的判定
并查集+欧拉 树的判定 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 A tree is a well-known data structure that is e ...
- URL编码原理解释
当你在浏览器中输入一个URL时,浏览器会将你输入到地址栏的非数字字母转化为URI编码. 那么,它是按照什么样的规则来转换的呢 是这样的,URI编码就是一个字符的ASCII码,它的ACSII码的十六进制 ...
- 基于jquery扩展漂亮的分页控件(ajax)
分页控件式大家在熟悉不过的控件,很多情况下都需要使用到分页控件来完成列表数据加载操作,在很多分页控件中有的编写麻烦,有的应用扩展比较复杂,有的分页控件样式比较丑陋,有的分页控件用户体验操作比较简单等等 ...
- 怎样在Java中实现基本数据类型与字符之间的转换
摘要:在我们对Java的学习当中数据类型之间的转换,是我们常见的事,我们也都知道基本数据类型之间有自动转换和强制转换,在int . short . long .float .double之间的转 ...
- Php AES加密、解密与Java互操作的问题
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- WINAPI 变量(2861个)
WINAPI 变量(2861个) 这是从 c:\Program Files\Windows Kits\8.1\Include\um\WinUser.h 这个文件 中提取的 CTRL+F 查看变量所 ...
- [React Fundamentals] Component Lifecycle - Mounting Usage
The previous lesson introduced the React component lifecycle mounting and unmounting. In this lesson ...