首页 文章 精选 留言 我的

精选列表

搜索[趋势探讨],共10000篇文章
优秀的个人博客,低调大师

2016年大数据金融领域10大趋势

2015 年对于银行和金融业公司来说是一个开局之年,在这一年中他们继续用大数据来帮助他们进行业务和组织架构的演进。 现在,放眼2016年将要面对的,我们猜测: 金融服务公司为了利益最大化进而不断整合大数据环境而言,他们面前的路依旧漫长。 银行家们也正在起草大数据战略,制定入门和随后的用例。 对于银行来说,大数据主要还是围绕提高客户情商,减少风险,符合监管。在可见的未来处于第一梯队的大型金融集团都会继续围绕大数据展开各种动作。 在低端市场,一些中小型的公司(经纪、资产管理、区域银行、顾问等)能够更快速的适应大数据平台(云平台和本地部署),这些都帮助他们构建能够支撑复杂业务的大型系统,同时这些系统也都是比他们大的竞争对手所必须面对的。这块市场因此能够快速成长(对比那些大银行所关注的长期而规范的和成本为主的项目)能够马上看到更加直接收入贡献和战略(概念/实验)项目 。 对于大数据软件提供商和服务提供商来说,市场已经到了一个银行业必须要接受的爆发点上。大家都要在高可用、大规模、内部管控和面向客户活动方面有一些措施。同时,这些内容和我们看到的云技术的发展路线有所不同。 下面给大家展示几个大数据技术发展方向的预测,和这些发展带来的变化如何影响金融服务业: 第一,机器学习将会加速发展,同时大批量的应用在反欺诈和风控领域。 数据科学家人才本身的供需关系将会朝着更加平衡的方向发展。在反欺诈和风控领域将会使用更加成熟的技术来改善风控模型本身,并且加速发展实时分析监控和预警。这些快速的发展和变化会来自于业界领导者的传授和在现实世界的实践与应用。 第二,业界领导和进步缓慢者之间的差距将会越来越大。 每一年我们都能看到银行为了适应新技术而加大油门快速前进,同时在组织架构方面非常保守。业务和用户在2016年都将要激增而且会非常多变,结果就是在广阔的市场导致更强的可观察到的和可衡量的业务大量回归(不只是成本的下降)。 第三,数据治理,血统和其他的合规性方面问题将会更加深入的集成到大数据平台中去。 为了找到一个能够在合规性方面提供更强大功能的数据解决方案,许多银行都购买或者开发了 单点解决方案,再不行就是用已经运行很多年的传统解决方案平台,但是这些解决方案都无法应对现今大规模爆发的数据。幸亏现在有越来越多的Hadoop改进方案来进行数据治理,改善血统和提供数据质量。更重要的是,这些新数据平台能够超越Hadoop平台达到传统数据存储的效果,并且做的更加大容量,更快,且在细节上达到合规性要求。此外在2016年我们将继续看到为融合监管和风险控制(RDARR)中心服务的叫做“数据湖”方面的更多进展。 第四,金融服务业正在利用物理网数据方面做出努力。 这一波浪潮正是抓住大数据吸引力炒作/发力的好时机,同时金融服务应用的为题也很多。物联网数据在许多行业应用中已经实践(电信,零售,制造业)这些行业驱动了物联网的数据的需求并且处于垄断地位。那么对于银行来说物联网数据是否能够用在ATM或者移动银行业务中?这些都是在明年的多渠道实时数据流中值得探索的。例如,实时,多渠道的商业行为可以使用物联网数据对银行零售客户在正确的时间点提供适时的报价 。或许我们反过来想想,金融公司可以将自己的服务内嵌植入到用户的某种“东西”或者设备或者其他和客户接触的点上,不在那些交易设施 上,而是在家。 第五,与贸易,投资组合管理和咨询申请集成成为软件供应商的一个显著特点。 鼓吹与“从大数据获得更多利益”相关的新闻头条越奏越响。最终,这些观点都将被金融终端用户、可见的利益(或者不可见、无法衡量的利益)还有易用性等因素决定。大数据平台的建设核心将要提供的就是一个桥梁就是大数据,并且将其锐化突出。我们已经看到了市场数据供应商最喜欢的动作,但是并没有其他商业用户的应用,那么朝这个方向努力(CRM,OMS/EMS等)。 第六,风险控制和监管数据管理将继续成为顶级大数据平台的重要任务。 增长和用户中心相关的商业行为将稳坐战略合作列表第一的位置,会有很多的公司会把未来的战略与大数据关联起来。不论你的银行是不是发达的数据驱动的公司不断变化发展的规律还是面对大量的挑战,朝着预测发展的分析都是一条漫长的道路,同时也是一个必要的需求和被公司首席高官确认有意义的事。除非老天开恩或者监管机构放松要求,否则风险控制和监管仍然是2016年所有金融机构的首要挑战。 第七,金融服务业采用Hadoop作为关系型数据库进行存取将会大大增加。 大家在不同的时间使用了相同的技术之间并没有任何差别。 “长尾”效应还很遥远,但是中小型银行将会从Hadoop的以下几方面获益: 供应商将整合整套集成解决方案,服务,平台 用户社区持续成长,并能提供一个基础参考作为突破口 数据降载成为当今Hadoop一个“经典”应用(相对来讲),同时许多大数据专家继续再更大的数据集合上前进,未来将会有更多的普通人加入到大数据应用的行列。 第八,金融服务“大数据终结app”理论在市场得到了越来越多的认可。 FinTech 已经孵化了2-3年,形成了大数据平台和用户间从前端到终端的连接。希望看到更多的银行作为证明概念来运行这些应用,这些实践将检验软件所提供的“完整解决方案”的基础。前端到终端和后端都应进行整合,而不是分割。大家可以看到市场迅速的从服务集成扩展到后端,这将迎来银行业的关于如何定位“大数据软件”和“传统软件” 的激烈讨论。 第九,变化来了,获得前进动力的最后一次机会。 随着越来越多的高可靠大数据平台的出现,安全专家,深层次的丰富元数据,集成LEI和其他标准成为一个严峻的现实。传统的数据的方法是有效的,只是需要一些思想来充分利用新的解决方案-例如处理架构和数据建模。更深一层,随着大数据工作在前台,市场营销和风险控制方面形成的工作模式,我们能够看出这里面在办公的中后期业务上有明显和巨大的数据重叠部分,这些重叠能够很容易的应用在现有的数据湖中。我们预计,在中等的商业风险评估与性能相关的大数据的商业行为将迅速增加。更进一步,我们将看到关于如何切实带来后台功能的更深层次的交流(合作等)。 第十,银行的机构方将开始采用并从零售业务的方式来获取线索增进对于市场目标客户的了解。 有一些纯B2B的公司利用大数据来改善客户商情,但是大部分时候他们处于B2C业务的不利地位,信用卡业务,银行零售业,财富管理或者借贷业务。一个简单的跨界就是基金的配置(大型共同基金经理)从财富顾问网络和经纪人相互作用来改善数据收集的过程,同时也提高产品利用率。一旦被从客户群中移除,这对于共同基金通常是非常重要的,所以加强对于机构客户的理解显得尤为重要。 信任仍然是许多大型银行的使用新供应商“大数据”的主要因素。换句话说,当你展望2016年,将会有很大的来自管理层的推动力,来把大数据项目移出IT然后放到商业用户手中。为了达成目的,我们需要考虑架构,功能,速度,可用性,安全性等问题。与往常一样,采用传统的严谨性以全新的架构布局并没有改变,传统架构将的成本和缓慢的进展将开始在新的Hadoop表现和融合的大数据的架构过程中逐步展现。 更进一步,将来一定会有更加强大的工具来处理现有的工作,例如数据治理,数据质量,参考数据管理,标准。这将要求各方持续的教育,即那些IT意外的继续教育。用以了解市场的快速发展。 最后,针对平衡开源和供应商解决方案将展开长期讨论。不是所有的开源项目设计之初就符合机构客户,开源项目传递了一种敏捷性需求开发—每个银行的需求都在不停的变化,为大数据找到合适的点才是更加重要的。总而言之,2016年的市场将会不断前行,混乱随之减少,同时会使大数据的海洋变得风平浪静。 本文转自d1net(转载)

优秀的个人博客,低调大师

cocos2d-x 2.1 Win32+Android开发中的sqlite数据库加密技术探讨

很显然,cocos2d-x编程中只了解基本的sqlite数据库操作技术只是一个开头,真正把此数据库数据应用于实际中不使用一定的加密及解密技术几乎是不行的。这个问题尽早会来到我面前,这不?现在就来了。一开始,自然想使用最省工的了;但是,这样的好事并不多,极少极少。。。。。。于是,我先搜罗了一些现成的文章拿来一阅。 1,Sqlite数据库加密解密 SRC: http://blog.sina.com.cn/s/blog_55cbb3d10100pdsp.html 现在是信息时代,各种各样的数 据总是伴随我们的日常工作和学习,前面介绍了Sqlite数据库的基本操作,可免费版的sqlite本身不带加密功能,想把自己的数据库加密的话,可以自 己编译源代码加入有关函数,这好麻烦啊,特别是对于我这种拿来主义的忠实粉丝!好在有高手为我们解决了这个难题。我们可以在这个链接里面了解有关 sqlite加密的一个方法并下载相关的可执行文件。 http://sqlite-crypt.com/documentation.htm (1)加密数据库 下载后,和普通版sqlite一样,也是一个可执行文件,操作方法稍微不同,普通sqlite数据库操作语句为:>sqlite3 test.db 使用这个加密版sqlite则需要这样做: >sqlite.exetest.db#这样就生成一个新数据库,普通数据库 >.changepass pass#这句就给当前数据库加上了密码,下次打开要用下面的语句 >sqlite.exe pass test.db 这样就将test.db加密了,密码为pass。加密之后可以进行普通的操作,如创建表,插入数据,查询等,语句和普通不加密版的sqlite语句完全一样 (2)改变密码 打开一个加密数据库后,在命令输入如下命令就可改变密码: >.changepass newpass 这样test.db的打开密码就变成了newpass (3)删除密码恢复为普通数据库 使用如下命令即可将密码消除,这样该数据库又变成了普通数据库,可以用sqlite3命令操作了。 >.changepass 2,SQLite数据库加密的一种解决方案 URL: http://www.sqlite.com.cn/MySqlite/3/253.Html SQLite是一个非常小巧的跨平台嵌入式数据库,它的数据库以文件的形式存放在本地磁盘上,但是在其开源的免费版中它却缺少了一个数据库中几乎是必备的功能,那就是对于数据库的加密。SQLite的数据库文件可以被任何的文本编辑工具打开,从而获取到其中的数据,这一点令很多开发者感到不安。 但是其实SQLite是支持数据库加密的,前些天看到了网友arris的帖子,具体如下: sqlite的源代码中原本就考虑了加密的实现,并且保留了接口sqlite3_key和sqlite3_rekey,只是这两个函数在free版本中没有实现,但幸运的是,sqlite的源代码的代码是开放并允许修改,我们可以很方便的增加加密的实现。在http://www.sqlite.com.cn/POParticle/3/216.Html链接的的代码包中就包含有可加密sqlite的源代码的实现,我根据这个包编译了一个可加密的sqlite。这个包加密实现调用了windows API的加密函数,所以只能在windows中使用。 这个可加密的版本是在一个ADO.NET 2.0 SQLite Data Provider的基础上改过来的(http://www.sqlite.com.cn/POParticle/3/216.Html),据原作者声称效率损失在千分之一以下。原始工程是基于VS2005的,但是考虑到其普及性还不是很广,所以重新建立了一个居于VC2003的工程。 其实SQLite的两个加密函数使用起来非常的简单,下面分情况说明: ①给一个未加密的数据库添加密码:如果想要添加密码,则可以在打开数据库文件之后,关闭数据库文件之前的任何时刻调用sqlite3_key函数即可,该函数有三个参数,其中第一个参数为数据库对象,第二个参数是要设定的密码,第三个是密码的长度。例如:sqlite3_key(db,"1q2w3e4r",8);//给数据库设定密码1q2w3e4r ②读取一个加密数据库中的数据:完成这个任务依然十分简单,你只需要在打开数据库之后,再次调用一下sqlite3_key函数即可,例如,但数据库密码是123456时,你只需要在代码中加入sqlite3_key(db,"123456",6); ①更改数据库密码:首先你需要使用当前的密码正确的打开数据库,之后你可以调用sqlite3_rekey(db,"112233",6)来更改数据库密码。 ②删除密码:也就是把数据库恢复到明文状态。这时你仍然只需要调用sqlite3_rekey函数,并且把该函数的第二个参数置为NULL或者"",或者把第三个参数设为0。 加密后数据库文件显示为乱码: 为此我建立了一个简单的示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 sqlite3*db; sqlite3_stmt*stat; char *zErrMsg= 0 ; char temp[ 256 ],FileRoot[ 256 ]; char buffer2[ 1024 ]= "0" ; sprintf(temp,_T( "%s" ),_T( "utf.db" )); CCodingConv::GB2312_2_UTF8(FileRoot, 256 ,temp, 0 ); sqlite3_open(FileRoot,&db); if (db==NULL) { return - 1 ; } sqlite3_key(db, "1q2w3e4r" , 8 ); sqlite3_exec(db, "CREATETABLElist(flienamevarchar(128)UNIQUE,fziptext);" , 0 , 0 ,&zErrMsg); sqlite3_prepare(db, "insertintolistvalues('中文GB2312编码',?);" ,- 1 ,&stat, 0 ); strcpy(temp, "测试数据UTF-8的支持情况" ); int len=( int )strlen(temp); sqlite3_bind_text(stat, 1 ,temp,len,NULL); sqlite3_step(stat); sqlite3_prepare(db, "select*fromlist;" ,- 1 ,&stat, 0 ); sqlite3_step(stat); const unsigned char *test=sqlite3_column_text(stat, 1 ); int size=sqlite3_column_bytes(stat, 1 ); printf( "%s" ,test); sqlite3_finalize(stat); //sqlite3_rekey(db,"",0); sqlite3_close(db); 具体的源代码如下: SQLite3.3.7加密版源代码(VC2003) SQLite3.3.7加密版源代码(VC2005) 例子1,例子2 3,SQLite数据库加密方案 URL: http://blog.chinaunix.net/uid-24800136-id-3299103.html 针对sqlite数据库文件,进行加密。现有两种方案如下 1.对数据库中的数据进行加密。 2.对数据库文件进行加密 两种加密方式的优缺点,比较如下: 一、对数据库中的数据进行加密 优点: 1.实现数据加密快速,只需添加两个方法 一是:对明文数据进行加密返回密文数据 二是:对密文数据进行解密返回明文数据 2.程序无需进行太大变动,仅在对数据进行 添加,修改,删除,查询时。针对指定的表字段 进行修改进行加密,解密的字段即可。 不足: 1.由于对数据进行了加密。所以为了看到明文,必须密文进行解密。 因此会增加处理器的消耗。因终端手机的处理能力有限,可能会出现 处理数据缓慢的现象发生。 2.仅仅对数据进行了加密,还是可以看到数据表的sql语句, 可能猜测到表的作用。另外,如果没有对一个表中的所有字段加密, 则可以看没有加密的明文数据。 需要做的工作: 1.无需考虑平台差异性,qt,android,ios都能快速 的实现。只需在每个平台上,使用各自的语言,实现 同样的加密,解密算法即可。 2.需要对加密算法进行了解,选择一种加密算法,进行实现。 二、对数据库文件进行加密 优点: 1.对整个文件进行了加密,用户通过编辑器看不到任何有用的数据, 用户使用sqlite browser软件也无法打开文件查看数据,保证了数据安全。 2.进行打开数据库时,使用程序sqlite3_key(db,"********",8); 即可对文件解密,对数据表的操作无需进行加密,采用明文即可。 不足: 1.需要修改sqlite的源代码,这个工作难度比较大。 2.需要对修改后的sqlite进行编译,需要对makefile有所了解, 手动编写makefile文件,对源程序进行编译。因平台差异性,可能会造成 某个平台无法编译生成动态链接库的可能。 3.需要对数据访问层代码进行修改,例如qt平台需要将以前对数据库操作使用的 QSqlQuery类,更改为使用sqlite3.h文件中定义操作,对数据库操作。 其他平台也一样,都要做这一步的修改。 4.在程序编译时,要加入使用加密的动态链接库(linux为共享库.so文件) windows平台最容易,只需将所使用的dll文件copy到应用程序中即可。 其他平台需要实验,看如何引入库,如果编译。 需要做的工作: 1.修改sqlite源代码,追加对数据库文件进行加密的功能。 2.编译含有加密功能的程序源代码,生成各自平台需要使用的库文件。 3.将加密sqlite库文件引入各自平台中,修改数据库访问层代码。 4.进行程序的部署,测试。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 加密算法的相关知识: 加密技术通常分为两大类:“对称式”和“非对称式”。 对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56Bits。 非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的 “公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密 钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用 自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。 常见加密算法 DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高; RC2和 RC4:对称算法,用变长密钥对大量数据进行加密,比 DES 快; IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性; RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法; AES(Advanced Encryption Standard):高级加密标准,对称算法,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法; BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快; MD5:严格来说不算加密算法,只能说是摘要算法 对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个 0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节 长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。(可参见MD5算 法词条) SSF33,SSF28,SCB2(SM1):国家密码局的隐蔽不公开的商用算法,在国内民用和商用的,除这些都不容许使用外,其他的都可以使用; 4,基于SQLite数据库加密模块的设计与实现URL: http://www.cnki.com.cn/Article/CJFDTotal-SJSJ200816008.htm 【摘要】:在嵌入式系统的开发设计中,用 数据库SQLite对系统的批量数据进行维护管理,可以大大提高程序的运行效率,但SQLite本身没有安全机制的支持。在分析电力系统应用需求,加密系 统和SQLite的应用特点,体系结构和开发技术基础上,设计并实现加密模块。结果表明,SQLite增加加密功能后,安全性得以提高。 【作者单位】:江苏大学计算机科学与通信工程学院;【关键词】:嵌入式系统数据库管理系统对称加密算法电力系统模块安全机制加密系统密钥设计安全性【分类号】:TP309.7【正文快照】: 0 引言电力工业飞速发展,需要处理的数据也在急速的增加,这样势必加大电力系统的负担,电力调度自动化系统的出现成为保证电力系统可靠、稳定运行的主要技术 手段,实现对电力系统的自动调度和控制。电力调度自动化系统主要有两部分组成:一部分是主站,另一部分是子站,主站对子站...... NOTE: 在客道巴巴上能够看到完整的原文。 5,SQLiteSecure–SQLite的加密扩展方法URL: http://www.bianceng.cn/database/extra/201001/14336.htm 这篇文章专门介绍如何扩展当前正越来越流行SQLite的数据库的加密部分, SQLite是"一个无须任何配置部署的嵌入式SQL数据库." 下面是本篇文章的目录: ·背景 ·本扩展模块的技术说明书 ·安装和使用 ·下载 ·警告和版权限制 ·鸣谢 ·相关法律说明 背景 我为什么要写这个扩展? 为了满足我自己的一些疯狂的想法.:) 好了,不开玩笑了.不久前我想写一个程序用来存储一些私人信息 (我自己的一个项目).我不想用那些很大的开源数据库,例如MySQL,因为它们确实是太大了,需要占用很大的空间,而且要单独的安装部署.后来我发现了 SQLite, 它非常的小巧而且运行起来很快,并且它的API函数十分的简单,在我的C++程序当中可以很方便的使用.就是有一个问题,大概是由于它要保持简单所以它不 支持任何的验证和加密.这令我一点安全感都没有. 因此我开始寻找SQLite的加密解决方案.我找到了两个,但是它们都是商业软件.SQLite的作者, D.Richard Hipp先生提供了一个可以对数据库文件进行完全加密SQLite的加强版本.也就是那个叫做SQLcrypt(tm)的商业软件, 它实现了数据存储层的透明加密.不幸的是它们对于我们这些普通人来说都太贵了, 尤其是对于我这种非商业目的只是想用SQLite开发一些小应用自己玩的人来说更是如此.然而我却是非常的需要对数据库进行加密- 在数据库层对整个数据库文件进行透明的加密.所有的开发者和用户只需要在打开数据库的时候提供密码就可以了.然后接下来的事情就全都交给数据库去做了.这 种方式将比那种在数据和字段上的加密要容易的多,也方便的多, 不然需要加密的字段就都要设计成BLOB或者string类型了. 在我搜索了SQLite的邮件列表和在Google上搜索免费的SQLite插件或扩展之后,我发现没有能够满足我的需求的, 所以我决定自己写一个.我从SQLite的作者预留的一些用来支持数据库加密解密的API接口获得了灵感,并且我发现实际上也有人写了一个基于 SQLite的加密库(SQLcrypt).我花费了几天的时间来研究一些加密的算法,我要选出一种使用(The AES (Rijndael) block cipher) ,另外还有就是如何生成密码, 当然最重要的就是我怎样才能把我用来完成加密解密数据库的代码嵌入SQLite的核心当中执行. 扩展模块的技术说明书 这个扩展模块的结构相当的简单.大体上来说我编写了SQLite代码中已经提供了原型的四个函数:sqlite3_key(), sqlite3_rekey(), sqlite3CodecGetKey(), 和 sqlite3CodecAttach().前两个函数是在sqlite3.h头文件中定义的公共API.另外两个定义在 attach.c 的sqlite3Attach()函数中.我阅读了它的源代码中提供的函数原形(主要是 pager.c 和 btree.c两个文件),看一下它们是如何工作的.我发现实现他们并不困难,因为对数据库加密解密的机制已经都实现了(感谢 Richard!). 这个扩展的其他部分就是写一个用来加密和解密的程序.为此我使用了AES加密算法,其中代码的关键部分取自Brian Gladman (his site) 还有David Ireland的高精度加密算法库BigDigits.因为我不想在一开始的时候就跟SQLite的数据库格式过多的纠缠, 所以我用了计数器模式(CTR)把AES加密块转换成256字节的加密流.这样加密之后的密文就可以和原来的明文有相同的长度,加密和没加密的数据库文件 尺寸相同 (也就是说不需要保存而外的信息).我还使用了Brian Gladman网站上提供的 PKCS#5签名的SHA256算法从用户提供的密码中来生成AES 算法的密钥.如果是这样的话, 我就要写很多的代码来处理salt value 才能避免往数据库中存入额外的信息. Pager结构体用来存放指向编码函数的指针, 用来从数据库中加密或解密数据.我写了这些代码用来加密或解密数据库中的记录.因为我使用了计数器(CTR)模式,加密和解密用的是相同的算法,所以简单 了许多.但是我还是需要初始化一个进程的计数器.我把数据库切分成了一个一个的块,每个都作为一个单独的AES加密块 (例如默认的情况下是16字节).每个块都从0开始编号.依据传入编码函数的page size和page number参数, 我算出计数块内的计数值 (等于块的编号) 和偏移量 (具体实现请看代码),然后用它来初始化加密流. 安装和使用 警告: 目前的代码还在试验当中.因此我很希望大家来帮我测试这些代码 (因为我没有那么多的时间和数据去进行测试), 使用的风险需要你自己去承担. 如果要使用这个扩展模块你需要下载修改过的SQLite和BigDigits库,然后自己编译它们.我只是在Win32系统下用MinGW compiler编译并测试过.但是我认为它在*nix系统下也能正常工作.如果你要使用MinGW, 你需要下载最新版MinGW的和M-sys .我是用gcc 3.4.2编译的. BigDigits高精度算法库可以从这里下载, 我自己写了一个Makefile 文件用MinGW把它编译成了一个静态的库文件.下载包里有编译好的BigDigits库文件.(bigdigits.h 和libbdmpa.a) 如果你想要自己编译,请遵循以下步骤: 1.从上面的地址下载源代码. 2.解压到一个目录里. 3.下载并保存'Makelib.mak'文件到刚才的目录. 4.修改头文件中最开始的一些 #define's和typedef's使之适合你的操作系统. 5.在命令行中输入'make -f Makelib.mak'编译源代码. 6.把编译出来的libbdmpa.a文件和bigdigits.h头文件拷贝到SQLite的顶层目录下. 对于Linux/Unix和MinGW的用户, 你只需要按照通常的步骤去做就可以 ./configure make make install 把SQLiteSecure编译了(包括配置和安装).编译出来的库文件和命令行可执行文件和原始的SQLite基本相同,除了前面加上了'sec'前缀,从而避免和你之前使用的SQLite命名冲突. 注意: **请** 不要问我如何用VC++或者其他编译其编译源代码.以为我不用,所以不知道. 你可以用的命令行sqlite3sec工具来先体验一下SQLiteSecure.打开一个普通的数据库文件, 输入 $ sqlite3sec a.db 打开一个加密的数据库文件, 输入 $ sqlite3sec -key "your passphrase" b.db 在sqlite3sec中你可以使用下列三种方法来添加一个加密的数据库: sqlite> ATTACH 'b.db' AS b; sqlite> ATTACH 'b.db' AS b KEY 'your passphrase'; sqlite> ATTACH 'b.db' AS b KEY blob; 第一种方法使用和主数据库相同的密码(或者是没有密码) , 第二种方法用你输入的短语来做密码.第三种方法假设你用BLOB的十六进制值作为密码(例如 f03d69ac3981...).不过我还没有充分的测试这个使用BLOB作为密码的版本.请注意:如果你的主数据库是加密的,然后你想添加一个不加密 的数据库,这种情况下你需要用第二种方法然后传递一个空字符串('')作为密码. 在sqlite3sec中你还可以用.rekey命令来改变数据库的密码,但是这个我目前还没有写完,如果调用的话会返回一个错误.;) API方法, 如果你需要加密一个数据库,你仅仅需要从用户或者其他的地方得到设置的密码, 然后在sqlite3_open() 或者 sqlite3_open16()函数之后,在调用其他的sqlite3函数之前调用sqlite3_key()函数。 函数举例: sqlite3 *db; ... sqlite3_open(DbFilename, &db); sqlite3_key(db, zKey, strlen(zKey)); ... 之前提到过re-key函数目前还不能工作,所以如果你调用了sqlite3_rekey()将会直接返回一个错误. 下载 下载包中包含了SQLiteSecure的源代码和编译好的BigDigits库文件.最省事的方法就是不改任何东西,直接解压缩以后先运 行./configure, 然后运行make.如果Makefile文件有问题请告诉我一下.但是除了GNU编译器(MinGW 或者 Linux)之外我无法提供其他系统的技术支持. SQLiteSecure source in .tar.gz format:http://www.voidbrain.com/sqlitesec/sqlite3sec-alpha.tar.gz SQLiteSecure source in ZIP format:http://www.voidbrain.com/sqlitesec/sqlite3sec-alpha.zip 警告和限制 ·我没有用tcl测试过这个库. ·我没有在实际的数据或者程序中测试这个库,也没有用一些特殊用例来测试. ·因为这个版本还没有实现更改密码.所以如果你想要更改密码,你需要导出加密的数据库到一个新的数据库当中(没有密码或者设置新的密码): $ sqlite3sec -key "cur pwd" a.db .dump | sqlite3sec b.db 或者 $ sqlite3sec -key "cur pwd" a.db .dump | sqlite3sec -key "new pwd" b.db 我要声明我并不是一个加密学的专家, 所以在设计和实现加密层的时候难免会存在安全漏洞.因此大家一定要明白我设计的这个扩展模块只是打算用在握自己的个人工程当中,对于安全性的要求远低于一般的商业产品的标准. ·最后你一定要记住它还不是一个完整的版本,它还在测试当中。 具体的实现请阅读src/sec_ext目录下的代码.你可以用我名字的大写缩写(LWL)来搜索我对于原始代码的改动.如果你对代码的实现有任何的意见或建议欢迎你反馈给我.当然它确实还有很大的提升空间. 鸣谢 向以下人致谢: ·D Richard Hipp for his SQLite library ·Brian Gladman for his AES and key derivation code ·David Ireland for his BigDigits multiple-precision arithmetic library ·Everyone who helped test and gave feedback, comments, and suggestions 法律声明 为了避免其他和我有同样需求的人重新发明轮子,我最终把代码开源了.但是我也说过了,这个扩展模块目前还是试验阶段,你可以使用或者修改代码来适合你的程序, 但是请在源代码中保留我的名字,另外在你的程序或者文档中也请注明我的付出. 但是如果你非不遵守这些约定,我也不会以法律的形式去起诉你,不会做任何对你本人,你的硬件产品,客户端程序,公司,个人名誉或者其他任何和使用这 个软件相关的东西做有害的事情.你也不是非要使用它不可, 你用了这个试验性的扩展模块就要考虑到它可能有bug,我对于这些bug造成的损失不负任何的责任.源代码已经提供给你浏览和审查了,我只能是担保我没有 故意写任何破坏你的系统的代码.所以如果你编译运行这个代码,一切风险自负. 欢迎大家提出建议和意见来帮助我改进代码,同时也可以发送给我代码的修正或者片段.我把这当作是一个学习的机会,所以我很期待好的建议或反馈. 我认为我的代码没有任何地方违反了别人的版权或协议.如果你发现有请通知我,我将去掉那些违反的地方. 6,cocos2d-x 下使用加密 sqlite3URL: http://blog.csdn.net/kerwin_zxc/article/details/7693139 sqlite3 加密库用的是wxsqlite3-3.0.0.1提取出来的, 在win32 , android 下测试通过,无异常。 编译时只需要编译 sqlite3secure.c 此文件,即可以成功,测试时生成静态库文件。 以下是android 下编译过程: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 LOCAL_PATH:=$(callmy-dir) LOCAL_PATH:=$(callmy-dir) #libsqlite3secure.a include$(CLEAR_VARS) LOCAL_MODULE:=libsqlite3secure LOCAL_CFLAGS:=\ -Wno-multichar\ -D_ANDROID\ -DLIBDIR= "c" \ -DIN_LIBRARY\ -DSQLITE_HAS_CODEC= 1 \ -DCODEC_TYPE=CODEC_TYPE_AES128\ -DSQLITE_CORE\ -DTHREADSAFE\ -DSQLITE_SECURE_DELETE\ -DSQLITE_SOUNDEX\ -DSQLITE_ENABLE_COLUMN_METADATA LOCAL_SRC_FILES:=\ shell.c\ sqlite3secure.c LOCAL_C_INCLUDES+=\ $(LOCAL_PATH) include$(BUILD_STATIC_LIBRARY) 7,iOS开发-sqlite数据库加密的两种方法+例子URL:http://download.csdn.net/detail/youngshook/4043540另外,我还简单分析了SQLCipher和wxsqlite3,发现直接拿过来用还是不行。但是,至此,基本有了思路:可以把这些开放源码的工程中的加密和解密代码整理出来供我们自己使用(很可能有平台依赖性,但是这没有关系)。也就是说,利用sqilte中虽然没有实现但已经提供的两个接口:sqlite3_key和sqlite3_rekey. 实现自己的这两个函数即可---只是要肯一点机密解密相关代码了。 本文转自朱先忠老师51CTO博客,原文链接:http://blog.51cto.com/zhuxianzhong/1531762,如需转载请自行联系原作者

优秀的个人博客,低调大师

微服务性能测试:未来三年趋势前瞻

在云原生落地加速的今天,微服务已从技术选型演进为系统基座。然而,一个被长期低估的事实是:90%的生产级微服务故障并非源于功能缺陷,而是性能瓶颈的连锁爆发——服务雪崩、链路超时、跨AZ延迟突增、熔断器误触发……这些现象背后,暴露的是传统性能测试方法论与微服务复杂性之间的深刻断裂。本文不复述JMeter压测步骤,而是聚焦一个更具战略意义的问题:微服务性能测试,正在向何处进化?

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册