惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - 小居工作室

七牛云存储客户端(本人开发,开源) 如鹏网 net高级技术 第二章 委托和事件(复习) 如鹏网 net高级技术 第一章 各种知识点(复习) 写个QuartzHelper类 Pdf File Writer 中文应用(PDF文件编写器C#类库) 如鹏网 静态Web开发 第五章:JQuery 如鹏网 静态Web开发 第四章:JSDom 如鹏网 静态Web开发 第三章:Javascript 如鹏网 静态Web开发 第二章:css 如鹏网 静态Web开发 第一章:html 如鹏网.Net三层架构 第四章代码生成器 如鹏网.Net三层架构第二章登录和会员管理 如鹏网.Net三层架构第一章三层基础 如鹏网.Net高级技术9.XML文件操作 如鹏网.Net高级技术8.反射 如鹏网.Net高级技术6.正则表达式 如鹏网.Net高级技术7.委托、事件 如鹏网.Net高级技术5.泛型集合及键值对 如鹏网.Net高级技术3.值类型和引用类型 如鹏网.Net高级技术4.String特点及常用方法
如鹏网.Net三层架构 第三章MD5和NPOI使用
小居工作室 · 2016-03-05 · via 博客园 - 小居工作室

该章内容:

该章节中主要讲解MD5和NPOI使用,

在项目中如何使用两种技术.

----------------------------------------------------------------------------------------

MD5算法:是一种散列(hash)算法(摘要算法,指纹算法),不是一种纯压缩算法,不是一种

加密算法(易错)。任意长度的任意内容都可以用MD5计算出散列值。

MD5长度一般是32位16进制数字字符串,Md5值的个数是有限的,但是源数据是无限的,

因此存着不同内容产生相同md5值的概率,因为Md5算法不可逆,即使得到内容对应的Md5的值,

无法由Md5值反推内容。但是对不同的内容产生相同md5值的概率非常非常低。

password字段保存用户输入密码的md5值,这样系统管理员、黑客也不知道用户密码是什么,

也避免了用户的其他系统密码被利用的问题。

判断正确性的方法 :计算用户输入的密码的MD5值,与数据库中存储的md5值进行比较,如果

相等则认为密码正确。

常见应用:计算文件的Md5值来检验文件是否被篡改过。

             网站的密码只能被重置,不能找回原来密码。

---------------------------------------------------------------------------------------------

md5算法理论上是不可逆的。

为了更安全:算两次MD5值,或加上一个固定的字符串。

和Md5类似的还有Sha等算法。

 ---------------------------------------------------------------------------------

NPOI读取Excel文件

 一个Excel文件-》Workbook有很多页-》Sheet,

每页里面有很多行-》Row,每行有很多单元格-》Cell

 看起来像数字的字符串以半角单引号开头就没问题了。

添加引用;

            using (Stream fs = new FileStream("myexcel.xls", FileMode.Open, FileAccess.Read))
            {
                //创建工作表
                IWorkbook workbook = new HSSFWorkbook(fs);
                //获取页
                var sheet = workbook.GetSheetAt(0);
                //遍历行
                for (var i = 0; i <= sheet.LastRowNum; i++)
                {
                    var row = sheet.GetRow(i);
                    //遍历单元格
                    var sb = new StringBuilder();
                    for (var j = 0; j < row.LastCellNum; j++)
                    {
                        var cell = row.GetCell(j);
                        if (cell.CellType == CellType.Numeric)
                        {
                            sb.Append(cell.NumericCellValue + "   "); //单元格的数据
                        }
                        if (cell.CellType == CellType.String)
                        {
                            sb.Append(cell.StringCellValue + "   "); //单元格的数据
                        }
                    } //End for j
                    Console.WriteLine(sb.ToString());
                } //End for i


                Console.WriteLine(sheet.SheetName);
                Console.ReadKey();
            } //End using

如鹏网:http://www.rupeng.com