开源加密库
① 加解密除了DES AES还有那些算法,哪里能下载到c,c++的加密解密算法源代码谢谢啊。
RSA,DSA等等,算法很多。
源代码建议你使用成熟的开源库,如:
OpenSSL http://www.openssl.org/
crypto++ http://www.cryptopp.com/
不知道你的需求,可能后者更能满足你的需要。
② 除了proguard还有免费的java混淆器吗
我们做java开发的一般都会遇到如何保护我们开发的代码问题。java语言由于是基于jvm上面,所以反编译class文件很很容易。假如我们做了一个web程序,并把这个web程序发布给客户。实际上,客户是很容易反编译出我们的源代码出来,包括所有的src文件和jsp文件等等。
那么,如何保护我们的源代码,实际上,应该有几种方法可以使用:1、使用代码混淆器 2、重载应用服务器的classloader
对于第一种方法来说,现在外面有很多开源工具可以使用,个人认为最好用的当属proguard莫属。proguard主要是易用易学。而且提供的功能也挺多。下面是个人一点使用心得
(1)、从网上download proguard工具,proguard工具主要包含是几个jar文件和一些example,下载地址http://proguard.sourceforge.net/
(2)、将里面的几个jar文件添加到类路径下面。当然,也可以不添加,但是下面在做混淆的时候,必须指定classpath,使在做混淆的过程中,能否访问该类
(3)、编写一个配置文件,主要是混淆器的一些参数。比如,下面是一个例子
-injars platform.jar
-outjars platform_out.jar
-libraryjars <java.home>/lib/rt.jar
-libraryjars ibatis-common-2.jar
-libraryjars ibatis--2.jar
-libraryjars ibatis-sqlmap-2.jar
-libraryjars junit-3.8.1.jar
-libraryjars d:/j2ee.jar
-libraryjars struts.jar
-libraryjars commons-lang.jar
-libraryjars D:/0working/coreproject/byislib/jasperreports-0.6.1.jar
-libraryjars commons-beanutils.jar
-printmapping proguard.map
-overloadaggressively
-defaultpackage ''
-allowaccessmodification
-dontoptimize
-keep public class *
{
public protected *;
}
-keep public class org.**
-keep public class it.**
各个参数的含义参考proguard文档,该文档非常详细,上手很容易
OK,到此就完成了代码混淆,打开产生的jar包可以看到,多了好多a、b、c之类的类文件。说明混淆结果已经成功。将原jar删除、运行产生的混淆jar包,一切正常!
常见问题:使用过程中个人遇到了几个问题,开始也是找了很久才解决
a. 内存溢出异常: 主要是proguard在做混淆的时候,吃了很多内存,因此,在运行混淆器的时候,可以增加内存,比如 java -mx512m .....
b.栈溢出异常: 主要是proguard在做混淆的时候,会对一些代码进行优化,若遇到一些相对复杂的方法时,可能会抛出此异常。对付的办法是增加配置参数-dontoptimize,如上面的配置例子所示
对于第二种方法,重载服务器的classloader的原理是这样。 首先我们通过一定算法把class文件加密; 然后写我们自己的classloader,替换服务器的classloader。 这样,我们可以读取class文件,通过我们自己的算法反加密成正确的class,然后再次进行load。这个方式还没应用起来,这几天个人正在研究,有什么新成果会在此做一些总结。
ProGuard是一个开源的项目,主页:http://proguard.sourceforge.net/,目前最新的版本是3.3.2.。加载混淆器是非常简单的,只需要解压缩proguard3.3.2.zip,然后在 J2ME->Packing->Obfuscation 标签中选择 Proguard 的安装目录。如下图所示,在这里可以对需要在混淆过程中保留的类名进行配置,MIDlet 类的名称必须保留,以便设备的 Java 运行时环境(JRE)能够找到执行的入口点。
http://images.csdn.net/20050726/image027.jpg,It’s about the above pic.
另一篇文档
ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小,并很难进行逆向工程。这里提到了ProGuard的主要功能是压缩、优化和混淆,下面我就先介绍一下这些概念,然后再介绍ProGuard的基本使用方法。
l 什么是压缩:
Java源代码(.java文件)通常被编译为字节码(.class文件)。而完整的程序或程序库通常被压缩和发布成Java文档(.jar文件)。字节码比Java源文件更简洁,但是它仍然包含大量的无用代码,尤其它是一个程序库的时候。ProGuard的压缩程序操作能分析字节码,并删除无用的类、字段和方法。程序只保留功能上的等价,包括异常堆栈描述所需要的信息。
l 什么是混淆:
通常情况下,编译后的字节码仍然包含了大量的调试信息:源文件名,行号,字段名,方法名,参数名,变量名等等。这些信息使得它很容易被反编译和通过逆向工程获得完整的程序。有时,这是令人厌恶的。例如像ProGuard这样的混淆器就能删除这些调试信息,并用无意义的字符序列来替换所有名字,使得它很难进行逆向工程,它进一步免费的精简代码。除了异常堆栈信息所需要的类名,方法名和行号外,程序只会保留功能上的等价。通过以上的了解,你应该明白为什么需要混淆了。
l ProGuard支持那些种类的优化:
除了在压缩操作删除的无用类,字段和方法外,ProGuard也能在字节码级提供性能优化,内部方法有:
² 常量表达式求值
² 删除不必要的字段存取
² 删除不必要的方法调用
² 删除不必要的分支
² 删除不必要的比较和instanceof验证
² 删除未使用的代码
² 删除只写字段
² 删除未使用的方法参数
² 像push/pop简化一样的各种各样的peephole优化
² 在可能的情况下为类添加static和final修饰符
² 在可能的情况下为方法添加private, static和final修饰符
² 在可能的情况下使get/set方法成为内联的
² 当接口只有一个实现类的时候,就取代它
² 选择性的删除日志代码
实际的优化效果是依赖于你的代码和执行代码的虚拟机的。简单的虚拟机比有复杂JIT编译器的高级虚拟机更有效。无论如何,你的字节码会变得更小。
仍有一些明显需要优化的技术不被支持:
² 使非final的常量字段成为内联
² 像get/set方法一样使其他方法成为内联
² 将常量表达式移到循环之外
² Optimizations that require escape analysis
ProGuard是一个命令行工具,并提供了图形化用户界面,它也可以结合Ant或J2ME Wireless Toolkit使用。通过ProGuard得到的更精简的jar文件意味着只需要更小的存储空间;网络传输更省时;装载速度更快和占用更小的内存空间。另外,ProGuard非常快速和高效,它仅仅只花费几秒钟和几兆的内存在处理程序。它处理的顺序是先压缩,然后优化,最后才进行混淆。The results section presents actual figures for a number of applications.与其他Java混淆器相比,ProGuard的主要优势可能是它的基于模版文件的简单配置。一些直观的命令行选项或一个简单的配置文件已经足够了。例如,下面的配置选项保护了jar文件里的所有applets:
-keep public class * extends java.applet.Applet
用户指南里说明了所有可用的选项,并以大量的例子为你演示这些功能强大的配置选项。
上面谈到了ProGuard的很多好处,现在我们就来看看如何在程序中使用ProGuard吧,之前也提到了ProGuard可以用命令行、图形界面、Ant等来执行和处理程序,同时也提到了配置文件,下面我们一起来看如何使用:
用命令行执行ProGuard的命令如下:
java –jar proguard.jar options……
具体的选项可以参考ProGuard的用户指南,你也可以把这些属性写在配置文件里;运行时,我们只需要指定这个配置文件就行了,例如:
java –jar proguard.jar @config.pro
而配置文件的格式也是要按照ProGuard提供的格式来写的,这个可以参考ProGuard例子里的配置文件来配置适合你的应用系统的ProGuard配置文件。ProGuard提供了图形界面的配置和运行程序,你可以在界面上配置你想要的参数,然后运行即可。前面提到的要手动写的配置文件也可以用图形界面来配置和生成。
如果你要在Ant里运行ProGuard,只需要添加一一个如下的target即可:
<target name="proguard" depends="init">
<taskdef resource="proguard/ant/task.properties" classpath="${lib.dir}/proguard/proguard.jar" />
<proguard configuration="${src.dir}/config.pro" />
</target>
你只需要制定lib.dir和src.dir属性就行了,同样的,这里也用了proguard配置文件,跟上面提到的是一样的。建议大家把ProGuardGUI当成一个生成配置文件的向导来使用,这样我们只需要修改配置文件而不用重新写一个配置文件。
如果你觉得ProGuard还不错,那就快把它加入你的项目里吧。
第三文档
这是一个不应该在开源社区出现的东西,但它的的确确是一个开源的项目,正像它的名字一样,Proguard,即Program Guard(程序卫士),它代表了开源的相对面--代码保护。
作为JAVA这样的高级语言,编译的产物只是相对源代码的一个概念而已,字节码虽然不像源代码那样易懂,但绝不是不可能进行反编译的,针对JAVA的反编译产品很多,如CAVAJ,JAD等等。面对反编译产品的不断出现,将代码视为财富的那些开发者,又何去何从。
混淆器正是在这种背景下应运而生,既然不可能完全地将拒绝反编译,那就让他们去反编译吧,只要反编译的结果别人不能直接使用不就行了吗?只要将代码搞混,让别人拿到了反编译的结果也看不懂,甚至不能编译。
混淆的方法有很多,主要是以下几方面。
更名,将私有类,私有的成员,方法体内部的变量名改名,改成a,b,c等等,甚至1,2,3(代码中不允许不等于成果物中不允许)
改变逻辑的流向,如将if条件取反,if/else对换
等价代码,如将循环改成GOTO
无效代码,插入不可及的无用代码
Proguard是一个非常优秀的开源的JAVA混淆器,可以在http://proguard.sourceforge.net/下载到,现在就让我一起来看一下Proguard.
以3.2版为例,释放压缩包,我们看到,作为开源项目就有docs,lib,src,sample文件夹,在此就不一一介绍了。
进入lib目录,内有proguard.jar,如果要自己有混淆器的外壳,或作ANT插件的话,会用到它,详细情况可以参考Proguard的文档。
我们要看的是proguardgui.jar,这是Proguard的图形界面,我们使用JDK打开,注意是JDK,不是JRE。
点选Input/Output标签,选择要混淆的JAR包(注意是JAR包),输出JAR包,以及用到的所有类库。
点选Obfuscation标签,选中不需要混淆的类(要被反射的类绝对不能被混淆)
点选Process标签,Process按钮,等着看结果吧。
Proguard中还包括了代码优化和代码整理的功能,不是本文讨论范围,有兴趣的就自己研究吧)
只混淆方面的选项
使用此种方式,如果a-z使用过,会转向aa.class,如下图配置界面
1,4,6,9,10,11,12
源代码
package org.zwm.pub;
public class Bru {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(showMsg());
}
public static String showMsg() {
return "You are my sun";
}
}
反编译后的代码
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kps.com/jad.html
// Decompiler options: packimports(3)
package org.zwm.pub;
import java.io.PrintStream;
public class Bru
{
public Bru()
{
}
public static void main(String args[])
{
System.out.println(PK0304140008000800fZ());
}
public static String PK0304140008000800fZ()
{
return "You are my sun";
}
}
③ 用C++写日记软件用什么数据库好啊
access不安全,即便加密用相关工具就破解出密码了,建议用sqlite,现在很火的一个小型数据库,很类似于access的一个桌面数据库,开源,加密算法可以自己写,可以参考:http://www.sqlite.com.cn/POParticle/3/253.Html
④ 非对称加密开源的算法和程序跨平台linux苹果windows安卓都能用的有什么
Windows基本上是我们个人电脑的系统,Linux主要是用于服务器的,而且很多的安全性高的系统都是在Linux的基础上改过来的。朋友在兄弟连学的云计算工程师就必须学Linux 的。
⑤ 什么是开源
开源即开放源代码。
开放源代码(Open source code)也称为源代码公开,指的是一种软件发布模式。一般的软件仅可取得已经过编译的二进制可执行档,通常只有软件的作者或着作权所有者等拥有程序的原始码。
有些软件的作者会将原始码公开,此称之为“源代码公开”,但这并不一定符合“开放原代码”的定义及条件,因为作者可能会设定公开原始码的条件限制,例如限制可阅读原始码的对象、限制衍生品等。
(5)开源加密库扩展阅读:
开放原始码的定义由Bruce Perens(Debian创始人之一)定义如下:
自由再散布(Free Distribution):允许获得原始码的人可自由再将此原始码散布。
原始码(Source Code):程序的可执行档在散布时,必需以随附完整原始码或是可让人方便的事后取得原始码。
衍生着作(Derived Works):让人可依此原始码修改后,在依照同一授权条款的情形下再散布。
原创作者程序原始码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码以与原始的程序码做分别,保障原始的程序码完整性。
不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放原始码软件不得因性别、团体、国家、族群等设定限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。
对程序在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):意即不得限制商业使用。 散布授权条款(Distribution of License):若软件再散布,必需以同一条款散布之。
授权条款不得专属于特定产品(License Must Not Be Specific to a Proct):若多个程序组合成一套软件,则当某一开放原始码的程序单独散布时,也必需要符合开放原始码的条件。
授权条款不得限制其他软件(License Must Not Restrict Other Software):当某一开放原始码软件与其他非开放原始码软件一起散布时(例如放在同一光盘片),不得限制其他软件的授权条件也要遵照开放原始码的授权。
授权条款必须技术中立(License Must Be Technology-Neutral):意即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。
⑥ 介绍一下什么是PDM技术PDM软件是什么
PDM的中文名称为产品数据管理(Proct Data Management)。PDM是一门用来管理所有与产品相关信息(包括零件信息、配置、文档、CAD文件、结构、权限信息等)和所有与产品相关过程(包括过程定义和管理)的技术。通过实施PDM,可以提高生产效率,有利于对产品的全生命周期进行管理,加强对于文档,图纸,数据的高效利用,使工作流程规范化。
PDM 制造过程数据文档管理系统 ,能够有效组织企业生产工艺过程卡片、零件蓝图、三维数模、刀具清单、质量文件和数控程序等生产作业文档,实现车间无纸化生产。
一、PDM技术简介
PDM是Proct Data Management的缩写,是指某一类软件的总称。CIMdata曾这样定义:“PDM是一种帮助工程师和其他人员管理产品数据和产品研发过程的工具。PDM系统确保跟踪设计、制造所需的大量数据和信息,并由此支持和维护产品”。
整个PDM系统和相应的关系型数据库都建立在计算机的操作系统和网络系统的平台上。同时,还有各式各样的应用软件,如CAD、CAPP、CAM、CAE、CAT、文字处理、表格生成、图象显示和音像转换等等。在计算机硬件平台上,构成了一个大型的信息管理系统,PDM将有效地对各类信息进行合理地、正确地和安全地管理。
由上述可知,PDM系统的重要功能有:产品结构管理、电子图档管理、工作流程管理、项目管理、安全管理、权限管理、产品配置管理、版本管理、与CAD/CAM系统的接口、与MRPII/ERP系统的接口等。
二、PDM关键技术 1、成组技术
成组技术(GT:Group Technology)是在零件设计和制造中充分利用相似性原理的方法。PDM系统中,GT技术主要体现在信息的编码管理和产品族管理。信息分类编码是企业信息化的基础,是企业实现计算机集成的基本条件之一。PDM中的编码方案应根据企业的需求,与企业的产品紧密结合在一起,充分考虑企业产品的更新换代和生产过程中信息的表示,使编码简洁、实用,起到组织和协调企业内部生产的作用。因此,编码的优劣成为企业能否接受PDM系统的关键性指标。
产品族管理是支持目前企业中“小批量、多品种”生产方式的有效工具。PDM系统中,将具有同类性能特征的产品、相似结构的部件和零件进行统一管理,提供符合国标的基本零件族定义和一套定制属性及继承关系的方法,能有效提高企业零部件的重用水平,使设计人员可以根据用户的需求迅速生成产品结构树、物料清单(BOM:Bill of Materials),从而对用户的需求作出快速反应。
2、客户化技术
PDM是一种使能技术,需要根据企业的不同情况进行实施。客户化工作包括为企业定制设计工作流程、项目管理方式、编码规则、版本控制方法、各种信息的利用方式以及企业提出的各种需求。客户化的目的是缩短PDM的实施周期,增加PDM系统的柔性,在客户化过程中最终实现“零编程”。目前比较好的解决方案有模板技术和组件技术。
模板技术是将各功能模块中的条件参数化。在PDM系统中建立适合于各种功能的模板库,客户化过程中,根据不同的需求调用不同的模板,即可在短时间内建立系统所需求的功能模块。模板技术适用于相对独立的功能模块,如果用户提出超出模板功能的要求时,系统需要另配开发工具,利用定制函数或描述语言进行简单的编程来实现。
组件技术是在系统中构造一些基本功能模块和过程模块(称为组件Component),这些模
块具有开放的接口和良好的可组合性,并可实现“即插即用”。当系统需要实现某种功能时,可以将这些基本模块进行组合,定义相应的属性即可。组件技术使得PDM的客户化工作变得十分简单,只需要搞清企业的具体需求,学会组件的重构方法即可构造出企业所要求的PDM系统。组件技术是软件设计的方向,尤其适用于Case-by-Case工程,企业可根据管理模式的变化自主调整系统的功能,减少对开发商的依赖。
3、流程的设计方法
PDM中的流程设计是确定产品设计中各个环节和路径的过程,具体包括设计人员工作职责的制订、审批人员权限的划分等。现行企业中各部门的工作流程具有相似性,实施方案需要根据企业的现行管理模式确定,这就给流程设计方法提出了能不断适应企业经营管理模式变化而重新组合的功能要求。
PDM中的流程设计方法有两种:一种是预置式流程设计,该方法将企业中的流程模式预制在一个模块中,制定流程时只需要对流程进行选择即可达到设计的要求;另一种是采用可视化设计方法,用图框表示节点,有向线段表示信息的流向,用属性来定义节点和流程的相互关系,如将节点定义为设计人员、校对人员、审批人员等,将流程定义为提交、返回修改等。可视化设计流程的方法比较直观,易于表达,具有较大的灵活性,企业也容易接受。
4、数据存储与管理
PDM系统中的数据管理包括数据的存取方式、数据的安全性和数据的管理模式等。目前的PDM系统中大多数采用Oracle、SyBase、SQL Server等流行的商用数据库,数据是以记录形式存放在数据库中,这种存放方式可以保证数据在物理上和逻辑上的独立性,有效地控制对数据的使用,允许不同需求的用户共享数据。但目前计算机应用系统都是基于文件的自动化孤岛,如CAD/CAPP/CAM等系统,在产品开发过程中生成的大部分数据属于工程数据,其形式多样,结构复杂,很难用一般的商用数据库来进行管理。目前采用了变通的方法,即允许数据存放在各自的文件中,数据库中只存放文件的元数据或路径数据,如文件的存放路径、文件名等相关的属性。
数据的加密措施有3种。一种是所谓伪加密,即将数据库中的元数据进行加密处理,原数据文件隐式无序存放,一般情况下很难在浩瀚的文件中理出成套技术文档。第二种方法是采用部分加密方案,将数据文件中的属性描述字节取出或加密处理,破坏了原文件的存贮结构,即使将其文件拷出也无法打开。这种方法数据的处理量小,基本上不影响系统的运行效率。第三种方法是设计一种算法,将文件整体加密处理,只要算法不被破译,文件就无法重现,但工程图形的数据量大,会影响系统的运行速度。
现行PDM系统的数据管理形式是基于关系型数据库的。数据之间关系通常是静态的、明确的、简单的,而产品设计过程中的数据往往是动态的、不明确的,结构也是复杂的,而且具有较高的相关性。人们希望对数据库的操作能实现“零输入”,即仅使用鼠标就可实现PDM系统中编码管理、流程管理、产品配置管理等功能。实现的方法是建立与产品数据库相对应的动态操作数据库,将系统所要实现的操作均存放在该操作库中,该库可动态的进行更新,它记录了需要实现的和已经实现的各类操作,供使用人员在操作时参考和选择。
5、系统集成
PDM系统的集成主要包括运行环境集成、信息集成、功能集成、技术集成以及人员和组织的集成。系统集成的核心是信息集成,关键是人和组织的集成,而运行环境的集成和技术的集成则决定了PDM系统的技术水平、运行效率以及生命周期,功能的集成将直接影响管理和生产的质量和效益。
PDM系统面对的是CAD/CAPP/CAM、MRPⅡ等系统所产生的数据的管理,由于各应用系统中各种对象描述采用的标准
⑦ C#相关框架有哪些
winform开发主流框架依然是N层架构,随着时间的推移,从面向对象集成系统开发转向面向服务的分布式开发,C#asp.net当前主流架构依然是MVC类似于C#的N层架构框架当前是MVC5。
相关框架如下:
1、Json.NET
是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型 等)和Json的转换。
2、Math.NET
目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支持线性代数的解析器,分析复杂微分,解方程等等功能。
3、Faker.Net
开发的时候是不是为测试数据烦恼?Faker.Net可以非常方便帮你生成大批量测试数据。例如人员表里面的姓名、性别什么的。
4、Html Agility Pack
是CodePlex 上的一个开源项目。它提供了标准的DOM API 和XPath 导航--即使 HTML 不是适当的格式!HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦。
5、NCrawler
是一款国外的开源网络爬虫软件,遵循LGPL许可协议。其HTML处理使用的是htmlagilitypack开源库,采用xpath的方式处理定位网页元素,十分方便。
6、SuperWebSocket
基于.NET开源Socket框架SuperSocket开发的, SuperSocket所支持的大部分功能在SuperWebSocket中得到了继承。用户可通过SuperWebSocket来快速的构建可靠的,高性能的websocket服务器端应用程序。
7、SuperSocket
一个轻量级的可扩展的 Socket 开发框架,可用来构建一个服务器端 Socket 程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作的。该项目使用纯 C# 开发,易于扩展和集成到已有的项目。只要你的已有系统是使用.NET开发的,你都能够使用 SuperSocket来轻易的开发出你需要的Socket应用程序来集成到你的现有系统之中。
8、Quartz.NET
一个开源的作业调度框架,是 OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而 创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。
9、Lucene.Net
Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。开发人员可以基于Lucene.net实现全文检索的功能。
10、HttpLib
一个基于C#语言的http协议的类库,Httplib让异步交互处理数据更容易了。类库的方法包括:上传文件到服务器,获取页面数据等等。
11、Smart Thread Pool
智能线程池,用SmartThreadPool可以简单就实现支持多线程的程序,由线程池来管理线程,可以减少死锁的出现。SmartThreadPool还支持简单的生产者-消费者模式,当不需要对任务进行持久化时,还是很好用的。
12、DocX
是一个用来操作word的轻量级的类库。借助DocX,开发人员可以在不需要安装Microsoft Word的情况下操纵word2007/2010文件。
13、NPOI
是POI项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。
14、PDFsharp
可以轻松地在 .NET 语言中创建PDF文档的开放源码库。它使用相同的绘制程序来创建 PDF 文档,在屏幕上显示,以及输出到打印机。可以修改、合并、拆分已经存在的 PDF 文件,支持透明图像。
15、Dapper
一个轻型的ORM类。代码就一个 SqlMapper.cs文件,编译后就40K的一个很小的Dll.Dapper很快。Dapper的速度接近与IDataReader,取列表的数据超 过了DataTable。Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库,当然如 果你知道原理也可以让它支持Mongo db。话说,这个ORM,博主自己也一直在使用,确实十分强悍,至少在性能方面,恐怕.NET里面的大多数ORM只能是望其项背了。
16、NHibernate
现在开发人员用的较多的一个ORM。NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。
17、log4net
Apachelog4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
18、SharpSerializer
一个开源XML和二进制序列化器。SharpSerializer可以序列化Xml和自己的二进制格式,还可以序列化Json等其他文本格式或其他数据加密,压缩,优化等二进制流。
19、XProxy
一个支持插件的基础代理程序集。通过编写简单的插件程序,你将能开发各种各样的代理程序。
XProxy是一个支持插件开发的数据交换机,可以编写插件对中转数据进行处理。内置有NAT插件、加解密插件、反向代理、直接代理、间接代理等插件。
20、nopCommerce
国外的一个高质量的开源b2c 网站系统,基于EntityFramework4.0和MVC3.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现 的,基于xml的多语言版本,非常灵活的语言切换功能,包括在后台都能同时编辑产品的中英文属性,非常适合做外贸,优秀超前的程序架构,性能也非常强大, 自定义的产品名称和分类又有很好的seo优化。综合能力远远高于国内的一些程序架构糟糕的.net商城程序,是二次开发和大型b2c架构的首选。3.0开 始支持多店。
21、Enterprise Library
目前最新版本为v5.0,支持.NET Framework 4.0,共包括9个Application Block,包括数据访问(Data Access Application Block)、异常管理(Exception Handling Application Block)、数据验证(Validation Application Block)等等,对企业应用开发非常有帮助,也非常实用。
22、Autofac
一款非常优秀的IOC框架,比较于其他的IOC框架,如Spring.NET,等等之类的,它非常的轻量级且性能上也很卓越。
23、AutoMapper
一个.NET的对象映射工具。主要用于领域对象与DTO之间的转换、数据库查询结果映射至实体对象。
24、7-Zip
一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的 7z 文件格式,而且还支持各种其它压缩文件格式,其中包括 ZIP, RAR, CAB, GZIP, BZIP2和 TAR 等等。此软件压缩的压缩比要比普通 ZIP 文件高 30-50% ,因此,它可以把 Zip 格式的文件再压缩 2-10% 。
⑧ 任务管理器里面Fs-zip File Manager是什么
7-zip又被称作7z、7zip,是一个开放源代码的免费的解压缩软件,提到解压缩软件我们就会想到的winrar和winzip,但是这两款是商业软件,要么收费要么有广告,而 7-Zip 则是完全免费开源且无广告的软件。7-Zip 除了可以支持压缩、解压缩 .zip、.rar、tar、gzip 等常见文件格式外,还独家支持压缩率更高的 .7z 格式。如果你使用7zip,你可以把文件压缩成常见的zip格式,也可以压成7z,为什么要使用这种格式,因为它有着最高的压缩比!所以,如果你经常上传大文件到网络云等网盘的话,使用7z格式打包后上传会节省很多时间。比如盗版系统的驱动安装时解压缩的驱动事先都是压缩成7z格式的,所以一张小小的700M的光盘可以包含一个系统和大部分的驱动程序,如果把这些驱动程序统统解压的话,那有600M,或者更多!是不是很厉害!
当然,你读到这可能会担心,如果别人的电脑上的压缩软件不支持7z格式怎么办呢?据十玩所知,winrar是支持这种格式的,是在不行,你可以使用7zip带有的自解压功能,即使系统上没有解压缩软件,你也可以把文件解压出来。7z这种格式除了高压缩比、自解压、支持文件头压缩、支持固实压缩这些特点外能够兼容任意压缩、转换、加密算法,还支持AES-256加密,支持最大16000000000GB文件的压缩,文件名使用Unicode,比如UTF-8格式就包含在内,所以使用7z压缩的软件在linux和MAC系统下是不会乱码的,也不会在压缩和解压缩时造成问题。
更惊讶的是7zip支持多种系统,包括Windows 10 ~ XP、MAC、linux、solaris、DOS、wince等。提供了极其优异的兼容性和稳定性,所以如果你使用多种操作系统,支持包括简体中文在内的87种语言,那么使用7zip这个压缩软件是个非常合适的。7zip和winrar是相似的操作界面,并且在右键中也包含压缩和解压缩的菜单(有压缩成zip或7z,如果不习惯压成7z可以压成zip)。而且由于开源免费,你还在可以将 7-ZIP 用于公司或商业用途不必担心版权问题。
⑨ 基于PostgreSQL数据库的几种数据加密实现方法
作为应用最广泛的信息存储和处理系统,数据库中存在大量敏感数据,如何防止数据被窃取和篡改是重中之重。加密技术是提高数据库安全的一个重要手段,在对数据库中存储数据进行加密时,需要结合它们的特点,对加密算法、加密粒度以及加密方式进行合理选择。比如,在选择加密算法时,对加密尤其是解密速度要求比较快,不能因为加/解密过程而导致系统性能大幅度下降。其次,应当支持灵活的加密粒度。根据用户的需要,能够选择对数据库、表、记录、字段、数据项进行加密。本文简要介绍和分析了在一个基于开源数据库PostgreSQL的安全数据库系统研究的基础上,如何针对PostgreSQL数据库的存储数据的不同层次,对数据库的文件(或表、页)、记录、字段等多个层次实现了加密。
⑩ 如何管理好自己的密码
方法集锦
文档类工具
1、记事本类工具
密码管理有很多种方式,最简单的一种就是将密码写到某个记事本文件里,然后可以通过类似Dropbox这样同步工具同步到多台电脑和移动设备上,同理也可以放到Evernote等云笔记本上,使用其自带的方法同步,这种密码管理方法最简单,也非常危险,因为密码是明文保存,一旦黑客入侵获取了这份密码文件,或者笔记本电脑丢失,用户都将失去所有的账号密码,风险很大。
2、word文档类工具
用word文档的好处是可以加密码,具有一定的安全性,也可以在首页自动生成目录,或用标签超链接的方式将各种账号密码分类目录放在第一页。每次编辑或查阅的时候直接用快捷键ctrl+鼠标左键快速达到目的页面。分类如可分为购物类网站、门户类网站、或者其他软件账号等,分别在相关页面填好账号密码。但是个人觉得这种方法操作起来比较麻烦,平常懒的时候干脆用记事本。
浏览器自带密码保存
Chrome浏览器和Firefox浏览器自身就支持保存密码的同步功能,可以保存登录过的用户名和密码,登录的时候只要选择就好了,不用重新输入。设置浏览器数据同步后,即使重装过系统后,还是可以还原回原先保存的密码,不用每次都要手动输入用户名和密码,使用起来非常方便,在易用性方面做的非常出色。
不过,Chrome和Firefox自带的密码管理器相对较为简单,如果黑客远程控制或入侵了用户电脑,就可以获得明文密码,很不安全。虽然Firefox可以设置“主密码”来防止查看明文密码,但设置“主密码”后,录入密码的易用性却大为降低。同时,对于同一个网站,浏览器只能记录一个用户名和密码。
因此,对于浏览器保存密码来说,密码保护的主要策略是防止用户电脑被入侵攻击。
在线密码管理服务
在线密码管理,就是将密码放在云端(服务器端),这就解决了本地电脑安全性问题,密码保护变成了针对密码服务器的保护。
最为着名的云端密码管理服务是LastPass,其支持Chrome、FireFox及IE等主流浏览器以及iPhone、Android和黑莓等移动设备,支持谷歌身份验证器(Google Authenticator),支持将浏览器中现有帐号及密码导入到LastPass数据库中。在登录时,Lastpass的浏览器插件会自动填写登录所需的信息并自动登录,支持针对同一个站点的不同用户名的登录,使用非常方便。
Lastpass在兼容性、易用性和安全性上都非常不错,并且提供免费版本,唯一的问题是Lastpass网站本身的安全性如何,做为一个云端在线密码管理服务,Lastpass将密码保存在网上,密码保护变成了针对Lastpass的密码保护,如果Lastpass网站有漏洞,或者用户的Lastpass密码被攻破,Lastpass的密码保护就会失效,用户依旧可能失去所有的明文密码。
因此,对于用户来说,强烈建议在Lastpass中绑定谷歌身份验证器(Google Authenticator),绑定之后,即使用户的Lastpass密码被盗,没有用户的手机和密保信箱,黑客也无法登录Lastpass网站。
开源密码管理软件
在线密码管理虽然看起来很酷,但很多人还是不放心,宁愿将密码放在本地保存管理,目前也有一些常用的本地密码管理软件,其中最知名的就是KeePass这个开源密码保护软件。KeePass采用本地数据库的方式对密码进行管理,软件对密码数据库采用256位AES算法加密,理论上破解难度极大。这样,即使电脑丢失或黑客入侵导致密码数据库被窃取,黑客也很难从中解密出明文帐号密码信息。
KeePass是开源软件,绿色无需安装,支持功能很多,包括导入导出、第三方插件以及中文界面等等,通过ChromeIPass和KeePassHttp两个插件,可以实现Chrome浏览器填入KeePass数据库密码的功能。
KeePass不能直接导入Chrome浏览器的密码,需要先使用ChromePass这个软件先将Chrome密码导出为CSV格式,然后再从KeePass中导入CSV文件。
除了免费开源软件之外,还有一些付费商业密码管理软件,例如1Password、RoboForm等,这些商业软件提供30天免费试用,超过时间期限后就需要付费购买。
总结
对于大量帐号密码的管理,肯定是需要一个密码管理软件,从跨平台以及易用性上看,Lastpass做为专业的帐号密码管理软件,使用简单,方便安全,相对其它几款软件有很大的可用性以及实用性。但Lastpass的主要缺点是,用户必须要信任Lastpass的安全性,而网络攻击可能会主要针对云端的Lastpass,而一旦Lastpass网站被攻破,则用户密码就存在外泄的可能。KeePass做为本地密码管理非常强大,但易用性相对较差,浏览器自身的密码保存易用性很好,但安全性很差。
总的来看,例如邮箱、网银等最为核心的密码最好还是记在自己的大脑里,一些其他重要性较低的网站密码可以采用上述的密码管理工具,以减轻用户记忆大量密码的负担,同时又保证了用户上网的安全性