自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

愷风(Wei)的专栏

使用工具、了解工具、创造工具……

  • 博客(1074)
  • 资源 (25)
  • 收藏
  • 关注

原创 我的技术博客索引

我的JAVA相关文章我的Clutter相关博客我的网络通信相关文章我的Linux相关文章我的与kernel module有关的文章我的嵌入式Linux相关文章我的MeeGo/Moblin相关文章我的Andriod开发相关文章我的与编程思想相关的文章我的无限网络文章我的产业生态链和杂谈文章我的四方书库生活空间为五斗饭相关文章天南地北相关

2009-09-12 22:47:00 12980 14

原创 RSA算法和证明

1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼 (Leonard Adleman)一起提出,因此名为 RSA 算法。RSA 算法中公私钥的产生1 随机选择两个不相等的质数 p 和 q p = 11, q = 29 2 计算 p 和 q 的乘积 n(明文小于 n) n = p× q = 11 * 29 ...

2019-11-08 20:00:15 2026 1

原创 中台的“酒”瓶

酒瓶和水中台的概念在今年突然很火,持续地火。产品不蹭一下中台的热点,自己都觉得不好意思。于是乎,看到了高矮肥瘦的各式各样的瓶子,都说是中台的酒瓶,里面有新瓶装旧酒的,更多的是装些果汁,矿泉水,不少的直接装自来水,甚至只装空气。只要不打开看,放在架子上,装扮得五光十色,十分喜庆。需求是第一导向中台是个概念,是个名词,尚无权威定义,本文也不打算讨论何为中台。下定义的人多了,但被认可要靠权威...

2019-10-19 12:11:32 1444

原创 【杂谈】国密2 vs 国密4,关公战秦琼

项目最近有人反映过来,说那谁谁谁说现在不要用国密2,过时了,要用国密4,反正就是看不上国密2之类云云。国密1、国密2、国密3、国密4,当中的1,2,3,4并不是安全等级,可能只是个先后顺序。 国密1是对称加密算法,类比我们常用的AEC。 国密2采用的是椭圆曲线,可以用于签名,协商密钥。很多证书的签名就是采用ECDSA,互联网上常用的协商密钥机制位RAS,椭圆算法的ECDH于此类...

2019-10-16 14:57:06 2896

原创 【杂谈】对代码的一些建议:从单模块到多模块

对于产品,一般来讲,从单模块,到负载均衡的多模块,最后到有服务治理的规模化集群(例如微服务),逐步发展和演进。本文并不打算涉及框架或者架构,也不讲什么大道理,仅从代码编写的角度,看看开发人员需要注意什么。单模块开发的一些注意事项单模块并不是指单体方式,根据功能进行模块划分,每个模块在生产环境中是单模块运行(主备方式)。单模块阶段开发人员仍是有要求,在我的实践中,从code review看,...

2019-05-16 17:21:08 1604

原创 【杂谈】学习一直在路上

博客已经有一段时间没有更新。江湖依旧在,心态有些懈怠,需要收拾心情,我要好好看风景。工作近来相对轻松,也就有了更多学习的时间。虽然博客停更了一段时间,但是在我自己的mediawiki上仍在耕耘,只是大多是付费课程的笔记,放在网上就不厚道,不亦乐乎之后,博客也就暂时放下。推荐一下极客时间,都是一些资深的大牛,讲的东西系统、清晰,很多前沿技术,发展很快,版本迭代快,没有什么经典书籍,需要频繁在...

2019-04-21 17:17:23 1293

原创 Java for Web学习笔记(一四二)Spring security准备(3)初窥

了解Spring Security的基本知识完全J2EE的web container也能提供完整的安全框架,但tomcat不是。Spring Security可以使用JDBC,或者我们的服务或仓库来认证用户,也提供了内置的对微软Active Derectory,Jasig的CAS(Central Authentication Service),JAAS(Java Authentication ...

2018-09-27 11:45:34 1151

原创 Java for Web学习笔记(一四一)Spring security准备(2)授权

访问的范围和权限属于授权。Principals和Identities就Java而言,很方便利用java.security.Principal。Principal至少会包含已被认证的用户identity,例如用户名,还可能有其他信息。此外还可以保护用户的授权信息,这些信息的表述应采用常量,例如枚举或者有限的字符串,否者过多的授权会对内存有影响,进而影响性能。Roles,Groups,Ac...

2018-09-27 11:44:15 1143

原创 Java for Web学习笔记(一四十)Spring security准备(1)认证

匿名认证匿名认证有多种方式:不是通过你的ID进行认证,例如通过HTTP的session ID,实际是认证你曾经访问。 作为其他认证缺失的情况:,例如可以匿名登录论坛进行浏览。当让如果要做更多的事情,通常需要进行身份认证。密码认证密码认证古来有之。有密码和反密码,例如空降兵密码为flash,地面部队为thunder,避免抢先问密码,导致密码泄漏。这有点类似https在使用前,用户先检...

2018-09-27 11:39:54 1140

原创 Java for Web学习笔记(一三九)篇外之数据库的ACID和JPA(3)隔离性

SQL中的Isolation实验SQL语句案例:-- SELECT @@session.tx_isolation; 查看当前的isolationSET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;-- SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;-- SE...

2018-09-27 11:24:56 1005

原创 Java for Web学习笔记(一三八)篇外之数据库的ACID和JPA(2)JPA

在测试中,我们发现在一个JPA事务中:Spring Data的写SQL是在最后commit前发出,这最大程度地缩短了写操作和commit之间的时间。 对相同的ID的读,JPA只从数据库中读取一次。 从数据库中获取entity,修改entity的数据,即使最后没有执行save,在commit之前,发送update。下面是其中一个测试小例子:@Transactionalpublic ...

2018-09-27 11:15:07 942

原创 Java for Web学习笔记(一三七)篇外之数据库的ACID和JPA(1)原子性

ACID大家都听过,看似也了解,但是在实际的项目中,发现不是所有人都正确理解。所以想谈一下当中容易忽略或者错误理解的地方。现在的开发语言和开发工具都很丰富,如果这要一一了解,也真是耗不起,但是有些是工具,知道怎么用就行,有些是基础知识,需要掌握。ACID就是基础知识,只有真正了解,才能在代码中进行合适的选择,特别是在异常处理和并发处理。在这个小系列中,基于下面的表格CREATE TABL...

2018-09-27 11:08:14 1049

原创 Java for Web学习笔记(一三六)映射(12)还谈FetchType.LAZY

说明在前面的学习中(见Java for Web学习笔记(一二七)映射(3)OneToOne),加上fetch = FetchType.LAZY的属性是集合或者Map。反映在SQL中,就是读取其他表格的信息(无论是通过join还是什么)。例如前面学习的@OneToMany、@ElementCollection。就单个表格而言,一次读取所有的列的数据,实际上在MySQL中,即使我们只是SELECT...

2018-08-24 16:23:03 2600

原创 Java for Web学习笔记(一三五)映射(11)代码触发器

说明数据库是有触发器Trigger。但我们希望业务逻辑能从底层的具体数据存储抽象出来(有需要时可以更好存储机制),也就是要在应用中编写trigger,而不是依赖底层数据库来实现。Entity内部触发器我们随便挑选以前的某个entity,在里面加入触发器。@Entitypublic class Person { ... ... // 【触发器说明】 //1...

2018-08-15 16:49:15 2031

原创 Java for Web学习笔记(一三四)映射(10)@SecondaryTables

说明@SecondaryTables在实际中很少使用。相当于是将一个entity的基础属性(不是collection)拆分到不同表中存放。这在表格设计中是不合理的。常用于遗留数据库,以及表格列太多查出数据库供应商的限制。和OneToOne不同,没有使用外键进行表格关联,而是两个表的主键代表同样含义。小例子数据库表格CREATE TABLE Employee ( Employe...

2018-08-09 17:12:10 1754

原创 Java for Web学习笔记(一三三)映射(9)中文输入

这个小例子中,我们已经:整个项目在eclipse中指定采用UTF-8 在web.xml中对jsp的配置已经设置了<page-encoding>UTF-8</page-encoding> 在jsp文件中,已经给出了<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">但是我们...

2018-08-08 15:55:50 1033

原创 Java for Web学习笔记(一三二)映射(8)@ElementCollection

说明在前面我们学习了OneToOne、OneToMany、ManyToOne,将数据库中不同表格的关联转换为spring中不同entity的关联。但是在不少场景中,我们希望在一个entity的视图中同查看到这几个表的信息,而无需通过entity之间的关联。在这个小例子中,我们还将学习和讨论到:表格有Employee,Employee_Address中存放员工多个地址,Employee_...

2018-08-08 15:52:33 9156 1

原创 Java for Web学习笔记(一三一)映射(7)entity的抽象和继承

Mapped superclass我们通过@javax.persistence.MappedSuperclass定义一个Mapped superclass,定义表格的通用属性,提供给Entity继承。它和Entity的属性映射是一样,但需注意:entity可以重写@Column。类标记为 @AttributeOverride或@AttributeOverrides,在里面给出需要overr...

2018-08-03 17:25:11 1835

原创 Java for Web学习笔记(一三十)映射(6)@Version

@VersionJPA可以将entity的某个属性(只允许一个)标记为@javax.persistence.Version。这个属性可以是整形和java.sql.Timestamp。如果是整形,Version从0开始,每次update,每次自动+1;如果是Timestamp,就是每次更新为now()。如果数据没有实际变化,version不会变更。小例子代码CREATE TABLE...

2018-08-02 14:38:05 2289

原创 Java for Web学习笔记(一二九)映射(5)ManyToMany

ManyToMany需要中间表格。小例子一本书可以有N个作者,一个作者可以有N本书。CREATE TABLE `Book` ( `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `BookName` varchar(50) COLLATE utf8_unicode_ci NOT NULL) ENG...

2018-08-01 11:37:21 1345 1

原创 Java for Web学习笔记(一二八)映射(4)OneToMany和ManyToOne

OneToMany和ManyToOne是更为常见的例子。如果A和B的关系是OneToMany,则B和A的关系就是ManyToOne。小例子我们继续前面书的例子,增加书评表。一本书可以有多条书评,一条书评对应一本书。CREATE TABLE Book ( Id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Book...

2018-07-31 14:17:54 1409

原创 Java for Web学习笔记(一二七)映射(3)OneToOne

OneToOneEntityA和EntityB是一对一的关联关系。这在实际中较少使用到。如果某个Entity具有上百个属性,我们可能会将某些属性分别放入子entity中另外存放。有点似列式数据库(如HBase)。用于属性很多,属性可以归类,很可能会有新增属性的情况。小例子CREATE TABLE Book ( Id BIGINT UNSIGNED NOT NULL AUTO_...

2018-07-30 11:52:32 776

原创 【ML】Python准备篇(3)安装pip

Linux安装 $ sudo apt-get install python3-pigWindows版本Python下载安装有两种方式:下载zip文件,解压即用。 下载installer,进行安装。一般而言,我们喜欢第一种方式,就是绿色安装。但是这种方式,我试了很久,手动安装pip只能试用与3.5版本或之前的。而3.6和之后的3.7需要通过installer进行安装。≤ 3...

2018-07-27 10:55:05 783

原创 【ML】Python准备篇(2)Sublime环境

下载相关介质从Sublime官网下载zip文件,在windows中解压即可。 在Python下载zip文件,在windows解压即可。Sublime上允许安装package control【方式一】 在Tools下面有一个Install Package Control,点击即可【方式二】菜单View -> Show Console,将下面的内容贴入到console中,按回...

2018-07-27 10:46:15 497

原创 【ML】Python准备篇(1)Anaconda环境安装

我们将在Ubuntu Server上安装Anaconda,并在其他机器上通过web来使用。下载和安装上https://www.anaconda.com/download/网站进行下载#【下载】download相应的安装介质$ wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh# 【安装】 ...

2018-07-27 10:05:44 816

原创 Java for Web学习笔记(一二六)映射(2):自定义类作为Entity属性

说明在之前的学习中,表格的一列对应Entity的一个属性。数据库表格的列都是比较简单的类型,由此也限制了属性也只能是简单的类型。本文将学习利用@Embeddable 实现多个类映射到复杂类型。多个列映射到类数据表格结构:CREATE TABLE `Person` ( `PersonId` bigint(20) unsigned NOT NULL AUTO_INCREMENT,...

2018-07-18 17:37:45 1304 1

原创 Java for Web学习笔记(一二五)映射(1):再谈converter

我们在《Java for Web学习笔记(一零八):再谈Entity映射(1)数据转换》中已经给出了通过转换器将数据库列的信息和指定类属性进行转换的例子。原生JDBC的时间日期转换JDBC的版本我们原来使用的mysql-connector-java-5.1.x支持多个JDBC的版本,我们可以通过下面的原生jdbc代码来检查当前使用的版本:try(Connection conn...

2018-07-17 16:26:47 2861

原创 【分布式】hadoop安装篇(11)CDH安装中的问题:swappiness

现象在运行的过程中,即使我们看到host的内存仍富有余量,但是健康检查亮橙灯,会有Swapping Concerning的提示,例如6 pages were swapped to disk in the previous 15 minute(s). Warning threshold: any.其实在安装过程中的自检中,也看到有关的wa...

2018-06-28 09:40:18 1317

原创 【分布式】hadoop安装篇(10)在Ubuntu中使用CDH安装hadoop集群(下)

安装和配置cluster11)进入集群配置我们将在wei001,wei002和wei003中安装hadoop,hase,spark作为我们后续学习的基础。相应地选择了HDFS,YARN,Zookeeper,oozie,hive,hue,HBASE,Spark。2)配置数据库在mysql中新增数据库 hive, ozzie和hue,分别提供给hive,oozie和hue组件。create datab...

2018-06-21 15:54:53 929

原创 【分布式】hadoop安装篇(9)在Ubuntu中使用CDH安装hadoop集群(中)

安装CDH1)启动server服务在wei001中执行:sudo service cloudera-scm-server start此时我们进入数据库,可以看到scm里面有表格的创建。这个部署需要花费点时间,我们可以跟踪log文件(/var/log/cloudera-scm-server/cloudera-scm-server.log)我们也可以打开浏览器,输入 http://191.8.2.93...

2018-06-21 15:42:30 572

原创 【分布式】hadoop安装篇(8)在Ubuntu中使用CDH安装hadoop集群(上)

安装拓扑我们将采用parcel的安装方式,如果采用手动命令行安装,可以参考 https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.4/bk_command-line-installation/content/ref-e7d8d791-4022-432b-9203-666bbaa1b2cb.1.html安装参考:https://www.clou...

2018-06-21 15:19:51 1049

原创 【分布式】hadoop安装篇(7)Hadoop 3的伪分布模式安装

准备$ sudo apt-get install ssh$ sudo apt-get install pdsh我们还需要设置pdsh的rcmd,执行下面内容。或创建/etc/pdsh/rcmd_default,里面填入sshecho "ssh" > /etc/pdsh/rcmd_default如果这步骤不设置,我们在启动hdfs时,可能会报告gsta@gsta005:~/wei/hadoo...

2018-06-21 14:28:13 3752 1

原创 【分布式】hadoop安装篇(6)Java API的验证

Maven<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.9.0</version></dependency>

2018-06-21 14:18:09 366

原创 【分布式】hadoop安装篇(5)验证和一些命令

在上一博文中,我们已经安装了Hadoop2.9的伪分布环境,我们需要对其进行一些验证。验证【在NDFS中创建目录,用于执行MapReduce jobs。】$ hdfs dfs -mkdir /user //这和linux的命令很是相识,前面加上-(-ls,-cat, -rmdir等等),这个目录是建在NDFS的img上的。$ hdfs dfs -mkdir /user/...

2018-06-21 14:06:05 811

原创 【分布式】hadoop安装篇(4)Hadoop 2.x的伪分布模式安装

Hadoop伪分布模式,是在一个单机上模拟Hadoop分布式环境,需要安装的包括: HDFS:包括NameNode和DataNode Yarn:是运行mapReducede容器,包括ResourceManager和NodeManager准备$ sudo apt-get install ssh 【已经安装了openssh,可以使用ssh,无需再次安装】$ sudo apt-get install...

2018-06-21 11:39:03 337

原创 【分布式】hadoop安装篇(3)安装准备和Standalone安装

下载在 http://hadoop.apache.org/releases.html 中获取相关的版本。安装参考: http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-common/SingleCluster.html http://hadoop.apache.org/docs/r3.1.0/hadoop-project-...

2018-06-21 11:07:51 579

原创 【分布式】hadoop安装篇(2)Virtualbox在Ubuntu server上的安装和使用(下)

web图形方式安装VirtualBoxweb方式利用phpVirtualbox,只支持到5.0版本。也可以强制使用5.2版本,web会提示版本不兼容,能够使用,但不要通过web上的远程连接,而是使用windows自带的远程桌面。1)加上virtualbox的源,前面已经介绍,不再重复2)安装5.0版本$ sudo apt-get install virtualbox-5.03)安装扩展包# 查看...

2018-06-21 10:44:51 368

原创 我的分布式学习博文

【hadoop安装篇】hadoop安装篇(1)Virtualbox在Ubuntu server上的安装和使用(上) 2018.6.20 hadoop安装篇(2)Virtualbox在Ubuntu server上的安装和使用(下) 2018.6.21 hadoop安装篇(3)安装准备和Standalone安装 2018.6.21 hadoop安装篇(4)Hadoop 2.x的伪分布模式安装...

2018-06-21 09:10:54 385

原创 【分布式】hadoop安装篇(1)Virtualbox在Ubuntu server上的安装和使用(上)

安装篇说明【环境】Ubuntu server 16.04。我们在接下来的几篇博客将介绍hadoop伪分布式安装(开发环境)以及通过CDH进行的集群安装(生产环境)。这些都在阿土16.04 server的环境。集群安装需要多台机器,作为实验用,我们采用虚机的方式。在windows上或者desktop的linux上都很容易使用virtualbox,有图形操作。而安装虚机的过程,也需要界面的。Ubunt...

2018-06-20 16:58:02 676

原创 Java for Web学习笔记(一二四):搜索(6)Lucene和Hibernate search

LuceneLucene是很强大的检索工具,Hibernate Search将lucene core和JPA/Hibernate ORM结合起来,当我们通过JPA添加或者修改数据时,自动在Lucene中index了entity,在检索时采用lucene core搜索引起进行搜索,并返回JPA对象实体。<dependency> <groupId>org.hibern...

2018-05-29 16:59:58 687 1

Pro Android学习:联系人API

Pro Android学习系列中的传感器小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2015-06-15

Servlet速成学习

跟踪http://edu.51cto.com/course/course_id-1774.html学习,在代码上做笔记,可算是速成学习完servlet

2015-03-20

Pro Android学习:传感器

Pro Android学习系列中的传感器小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2015-02-06

[zip文件] Pro Android学习:拖拽小例子

Pro Android学习系列中的拖拽小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2014-12-12

Pro Android学习:touch screen小例子

Pro Android学习系列中的Touch Screen小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2014-11-18

Pro Android学习:list widget小例子

Pro Android学习系列中的List Widget2小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2014-10-23

Pro Android学习:widget小例子

Pro Android学习系列中的Home Screen Widget小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2014-10-15

Pro Android学习:media frameworks小例子

Pro Android学习系列中的media frameworks小例子。具体见http://blog.csdn.net/flowingflying/article/details/6212512

2014-09-30

[zip文件] Pro Android学习:telephony小例子

这是Pro Android学习系列中Telephony API部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-09-16

Pro Android学习:location小例子

这是Pro Android学习系列中location部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-08-27

Pro Android学习:2D动画小例子

这是Pro Android学习系列中2D动画部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-08-14

Pro Android学习:Alarm manager小例子

这是Pro Android学习系列中alarm manager部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-07-18

Pro Android学习:Broadcast小例子

这是Pro Android学习系列中Broadcast部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-07-01

Pro Android学习:AsyncTask小例子

这是Pro Android学习系列中AsyncTask部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-05-16

Pro Android学习:了解Handler小例子

这是Pro Android学习系列中Android Service部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-05-08

Pro Android学习:了解package的小例子

这是Pro Android学习系列中了解package部分的例子源代码。包括通过共享UserID实现资源共享,以及lib项目

2014-04-18

Pro Android学习:Android service小例子

这是Pro Android学习系列中Android Service部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

2014-03-27

Pro Android学习:Http service小例子

这是Pro Android学习系列中http service的例子源代码。

2014-02-10

Pro Android学习:permission例子

这是Pro Android学习系列中permission部分的例子源代码。

2013-12-19

Pro Android学习:Preference(首选项)小例子

这是Pro Android学习系列中preference部分的例子源代码。

2013-12-04

Pro Android学习:ActionBar小例子

Pro Android学习系列中的action bar小例子。

2013-11-07

Pro Android学习:Dialog小例子

这是Pro Android学习dialog部分的例子源代码。

2013-10-30

Pro Android学习:Fragment

这是Pro Android学习Fragment部分的例子源代码。

2013-10-25

Pro Android学习:Menu

是Pro Android学习笔记Menu系统的例子代码

2013-09-29

NTLM PPROXY client的实现(C source code)

HTTP PROXY中NTLM的客户端的C源代码。包含相关的DES等算法在内。Base64的算法,是通过网上共产主义获取,MD4,MD5,HMAC MD5的算法是RFC中提供的,其余的可以根据下面链接的步骤进行编写。我提供一个源代码的例子。其中arith_开头的相关算法,httppc_ntlm是 NTLM的type1、type2、type3消息的应答构成,test_httppc_connect是一个测试的例子,里面没有main函数,但是另外构造一个main函数,在wei_set_proxy_info之后,调用wei_httppc_connect就可以了。详细见http://blog.csdn.net/flowingflying/archive/2009/03/03/3952796.aspx 有朋友说少了头文件,我查了一下,不好意思,少了md.h。请参考下面。 /* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved. License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD4 Message-Digest Algorithm" in all material mentioning or referencing this software or this function. License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD4 Message-Digest Algorithm" in all material mentioning or referencing the derived work. RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. These notices must be retained in any copies of any part of this documentation and/or software. */ #ifdef __cplusplus extern "C" { #endif #ifndef WEI_MD_H #define WEI_MD_H #ifndef IN #define IN #endif #ifndef OUT #define OUT #endif /************************************ 算法:MD4和MD5 *********************************/ //从RFC1320 The MD4 Message-Digest Algorithm的附录 //从RFC1321 The MD5 Message-Digest Algorithm的附录 /* PROTOTYPES should be set to one if and only if the compiler supports function * argument prototyping.The following makes PROTOTYPES default to 0 if it has not * already been defined with C compiler flags. */ #ifndef PROTOTYPES #define PROTOTYPES 0 #endif /* POINTER defines a generic pointer type */ typedef unsigned char * POINTER; /* UINT2 defines a two byte word */ typedef unsigned short int UINT2; /* UINT4 defines a four byte word */ typedef unsigned long int UINT4; /* PROTO_LIST is defined depending on how PROTOTYPES is defined above.If using PROTOTYPES, * then PROTO_LIST returns the list, otherwise it returns an empty list. */ #if PROTOTYPES #define PROTO_LIST(list) list #else #define PROTO_LIST(list) () #endif /* MD4 context. */ typedef struct { UINT4 state[4]; /* state (ABCD) */ UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } MD4_CTX; void MD4Init PROTO_LIST ((MD4_CTX *)); void MD4Update PROTO_LIST ((MD4_CTX *, unsigned char *, unsigned int)); void MD4Final PROTO_LIST ((unsigned char [16], MD4_CTX *)); /* MD5 context. */ typedef struct { UINT4 state[4]; /* state (ABCD) */ UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */ unsigned char buffer[64]; /* input buffer */ } MD5_CTX; void MD5Init PROTO_LIST ((MD5_CTX *)); void MD5Update PROTO_LIST ((MD5_CTX *, unsigned char *, unsigned int)); void MD5Final PROTO_LIST ((unsigned char [16], MD5_CTX *)); #endif #ifdef __cplusplus } #endif 因为我没有认真地打包封装,而是从我的一个project中抽出了,有些遗漏,请大家原谅。今天又有网友来问PRIVATE在哪里定义。因为代码不在手头的机器上,没法仔细看,PRIVATE的定义如下 #define PRIVATE 定义为空,这是模仿C++的private,说明这个函数不会被其他文件引用,只用于本文件。 最近又收到网友的来信,说少了几个util文件。这个是不在ntlm的算法中,而是在验证例子test_httppc_connect.cpp中使用。查了一下,我确实没有放到网上。汗啊,因为验证例子是从某个程序中抽取出来,里面包含一个很简单的http的解析。我本来想update资源,没有找到 update的方法。需要说明的是这部分和真正的算法没有直接关系。放在这里,太长了,如果需要的网友,请到http://blog.csdn.net/flowingflying/archive/2009/03/03/3952796.aspx 那里下载。

2009-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除